본문 바로가기

실버 II15

[백준 1780] 종이의 개수 [C] 풀이 9등분을 하고, n/3만큼 좌표를 (x, y) 증가시켜 Divide and Conquer 하면 된다. N만큼의 종이가 모두 같을 때, 탐색을 중단해야 하므로 중단 조건을 함수로 만들어 풀이했다. 소스코드 #include int paper[2187][2187], I[3]; int all_same_paper(int x, int y, int n){ int temp = paper[x][y]; for (int i = x; i < x+n; i++) for (int j = y; j < y+n; j++) if (paper[i][j] != temp) return 0; return 1; } void division(int x, int y, int n){ if (all_same_paper(x, y, n)) I[pape.. 2021. 8. 9.
[백준 11047] 동전 0 [C] 풀이 가치가 가장 큰 동전부터 K이하일 때 하나씩 빼주고 횟수를 세주면 된다. 소스코드 #include int main(){ int N, K; scanf("%d %d", &N, &K); int coin[N]; for (int i = 0; i < N; i++) scanf("%d", &coin[i]); int cnt = 0, idx = N-1; while (K) if (K < coin[idx]) idx--; else { K -= coin[idx]; cnt++; } printf("%d", cnt); } 출처 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1.. 2021. 8. 9.
[백준 18870] 좌표 정렬 [C/C++] 풀이 입력받은 좌표들을 오름차순으로 정렬하고, 중복을 제거했을 때, 각 요소들이 몇 번째인지 출력하는 문제다. 입력받은 수들을 두 벡터에 저장하고, v2는 오름차순으로 정렬 후, 중복을 제거했다. 중복된 수가 제거된 v2에서 lower_bound()를 사용하면, 원하는 결과를 얻을 수 있다. 소스코드 #include #include #include using namespace std; int main(){ int N, temp; scanf("%d", &N); vector v1(N), v2(N); for (int i = 0; i < N; i++){ scanf("%d", &temp); v1[i] = v2[i] = temp; } sort(v2.begin(), v2.end()); v2.resize(unique(.. 2021. 8. 8.
[백준 10997] 별 찍기 - 22 [C] 풀이 별을 아래의 그림처럼 노란색, 연두색, 하늘색, 분홍색으로 나누어 찍었다. void mark_star(int p, int N){ if (N == 1) arr[p][p] = arr[p+1][p] = arr[p+2][p] = '*'; // 노란색 else { int row = 4*N-1, col = row-2; for (int i = p; i < p+col; i++) arr[p][i] = arr[p+row-1][i] = '*'; // 연두색 for (int i = p+2; i < p+row-1; i++) arr[i][p] = arr[i][p+col-1] = '*'; // 하늘색 arr[p+1][p] = arr[p+2][p+col-2] = '*'; // 분홍색 mark_star(p+2, N-1); } }.. 2021. 8. 7.
[백준 1260] DFS와 BFS [C] 풀이 DFS는 방문 기록이 없는 정점만 탐색하면 된다. BFS는 방문한 정점을 visited뿐만 아니라 Queue에 순서대로 기록하고, front로 탐색의 기준점을, rear로 탐색의 중단점을 설정해주면 된다. 소스코드 #include #include int N, arr[1001][1001], visited[1001], queue[1001]; void dfs(int v){ visited[v] = 1; printf("%d ", v); for (int i = 1; i 2021. 8. 5.
[백준 1541] 잃어버린 괄호 [C] 풀이 숫자가 아닐 때까지 숫자로 변환해 temp에 저장하다가 부호를 만나면 sum에 저장했다. 처음에 숫자가 입력되므로 양수이기 때문에 '-'일 때, sub[0]에 저장을 해주고 sub[1] 이후로는 빼줄 수를 저장했다. 소스코드 #include #include #include int main() { char str[51]; scanf("%s", str); int len = strlen(str), sub[25] = {0,}, cnt = 0, sum = 0, temp = 0; for (int i = 0; i 2021. 8. 4.