목록Baekjoon (177)
GitHubSeob

문제 https://www.acmicpc.net/problem/24498 24498번: blobnom 블롭들은 심심해서 서로를 이용해 $N$개의 탑을 만들었다. 각 탑의 높이는 그 탑에 있는 블롭의 수와 같다. 여러분은 다음 행동을 $0$회 이상 할 수 있다. 처음과 마지막이 아닌 탑 중 하나를 선 www.acmicpc.net 문제풀이 맨 처음과 맨 끝을 제외한 탑에 있는 블롭의 수 + 인접한 두 타워 중 블롭의 최솟값을 더한 값 중 최댓값을 구하는 문제이다. 조심할 점은 인접한 블롭수를 더하지 않는 맨 처음 또는 맨 끝에 있는 탑의 블롭수가 정답일 수도 있다는 점이다. 먼저 answer에 맨 처음 타워인 tower[0], 맨 끝 타워인 tower.back() 중 최댓값을 저장해 놓는다. 그다음 1부터 ..

문제 https://www.acmicpc.net/problem/2428 2428번: 표절 첫째 줄에 제출한 솔루션의 개수 N이 주어진다. 둘째 줄에는 각 솔루션 파일의 크기 size(F1), size(F2), ..., size(FN)이 주어진다. (1 ≤ N ≤ 100,000, 1 ≤ size(Fi) ≤ 100,000,000) 솔루션 파일의 크기는 정수이 www.acmicpc.net 문제풀이 두 파일이 있을 때 두 조건을 만족해야 한다. 1. 작은 파일 = 큰 파일 * 0.9 따라서 이분 탐색인 lower_bound를 이용하여 문제를 푼다. 모든 입력을 받았으면 sort를 통해 오름차순으로 정렬한다. 0번째 파일부터 N-1번째 파일까지 탐색을 한다. 탐색하는 idx번째 파일을 큰 파일로 둔다. 그렇다면 ..

문제 https://www.acmicpc.net/problem/2559 2559번: 수열 첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기 www.acmicpc.net 문제풀이 연속된 K개만큼의 누적합 중 가장 큰 값을 구하는 문제이다. 먼저 온도를 입력받는다. 0번 온도부터 K개만큼 온도의 합을 sum에 누적 합한다. 그다음 현재 누적합에서 가장 처음에 더한 값을 뺀다. (idx - K 번째 온도) idx - K번째 온도값을 뺐으니 idx번째 온도를 더해 더한 온도의 개수를 K로 맞춘다. max 함수를 이용해 answer의 최댓값을 갱신한다...

문제 https://www.acmicpc.net/problem/1245 1245번: 농장 관리 첫째 줄에 정수 N(1 < N ≤ 100), M(1 < M ≤ 70)이 주어진다. 둘째 줄부터 N+1번째 줄까지 각 줄마다 격자의 높이를 의미하는 M개의 정수가 입력된다. 격자의 높이는 500보다 작거나 같은 음이 아닌 정수 www.acmicpc.net 문제풀이 문제를 제대로 안 봐서 조금 헤맸다. 인접한 격자는 상, 하, 좌, 우의 네 방향이 아닌 대각선까지 포함하여 총 여덟 방향이다. 그리고 산봉우리는 하나의 칸일 수도 있고 여러 칸일 수도 있다. 산봉우리 격자들은 모두 같은 높이여야 하고, 그 외의 칸들은 산봉우리의 높이보다 작아야 한다. 우선순위 큐를 이용해 높이 기준으로 내림차순 하게끔 cmp함수를 작..

문제 https://www.acmicpc.net/problem/5464 5464번: 주차장 시내 주차장은 1부터 N까지 번호가 매겨진 N개의 주차 공간을 가지고 있다. 이 주차장은 매일 아침 모든 주차 공간이 비어 있는 상태에서 영업을 시작하며, 하룻동안 다음과 같은 방식으로 운영 www.acmicpc.net 문제풀이 우선순위 큐, 큐를 이용하여 풀었다. 생각보다 고려해야 될 것이 있던 문제였다. 주차장 자리가 없을 때 차량이 들어오는 것도 고려해야 하고, 주차장 자리가 여러 개일 때도 고려해야 했다. 우선순위 큐 remain은 남은 주차장을 나타낸다. 남은 주차장은 번호가 작은 주차장이 우선순위큐의 top부분에 오게 된다. ({번호, 요금}) 큐 waiting은 남은 주차장이 없어 대기를 하고 있는 차..

문제 https://www.acmicpc.net/problem/13422 13422번: 도둑 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫째 줄에 테스트 케이스의 개수를 나타내는 자연수 T가 주어진다. 각각의 테스트 케이스의 첫째 줄에 마 www.acmicpc.net 문제풀이 누적합, 슬라이딩 윈도우 문제이다. 집을 고를 때는 항상 연속된 위치에 있는 집만 고를 수 있다. 붙어있는 m개 만큼의 집을 고르고 돈의 총합을 구해 K보다 작으면 개수를 하나 늘려주면 된다. for (int idx = 0; idx < M; ++idx) sum += money[idx]; if (sum < K) ++answer; for (int idx = 1; idx < N; ++idx) {..

문제 https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴 첫째 줄에 1번 톱니바퀴의 상태, 둘째 줄에 2번 톱니바퀴의 상태, 셋째 줄에 3번 톱니바퀴의 상태, 넷째 줄에 4번 톱니바퀴의 상태가 주어진다. 상태는 8개의 정수로 이루어져 있고, 12시방향부터 www.acmicpc.net 문제풀이 톱니바퀴가 회전할 때는 처음 입력받은 톱니바퀴는 반드시 회전한다. 그다음 인접한 톱니바퀴는 회전하고 난 후가 아닌 회전하기 전의 기준 톱니바퀴와의 조건을 따져야 한다. prev_gear와 gear를 따로 두어 조건을 따지는 톱니바퀴는 prev_gear를 이용하고, 회전을 할 때는 gear의 톱니바퀴를 회전하였다. 왼쪽 톱니바퀴의 [2]와 오른쪽 톱니바퀴의 [6]의 극을 따져야 ..

문제 https://www.acmicpc.net/problem/10025 10025번: 게으른 백곰 첫 줄에 정수 N과 K가 들어온다. 둘째 줄부터 N째 줄까지, 공백을 사이에 두고 각 양동이의 얼음의 양을 나타내는 gi와 양동이의 좌표를 나타내는 xi가 주어진다. www.acmicpc.net 문제풀이 처음에는 이중 반복문으로 풀었는데 시간 초과가 나서 투 포인터를 이용해 풀었다. pair를 이용해 벡터에 앞부분에는 좌표, 뒷부분에는 얼음양을 입력받는다. 백곰은 한번 정한 자리에서 -K ~ +K 부분까지만 이동할 수 있다. 입력은 좌표순이 아니므로 sort함수를 이용해 좌표를 오름차순으로 정렬한다. 먼저 left, right를 0으로 정한 뒤 left, right를 움직이며 범위를 정한다. 만약 left..

문제 https://www.acmicpc.net/problem/2641 2641번: 다각형그리기 모눈종이에 다각형을 그리려고 한다. 그리는 방법은 모양수열로 표시된다. 모양수열은 1과 4사이의 숫자가 연속되어 나열된 것으로 1은 오른쪽으로, 2는 위쪽으로, 3은 왼쪽으로, 4는 아래쪽으로 www.acmicpc.net 문제풀이 구현문제이다. DFS로 풀었다. 모양수열의 길이는 최대 50이므로 100*100 크기의 2차원 배열을 선언하여 풀었다. 문제의 예시를 보면 모양을 회전 또는 뒤집어서는 안 되며, 주어진 모양과 같아야 한다. DFS함수로 2차원 배열에 입력받은 표본 모양수열의 값들대로 이동하면서 값을 true로 바꾼다. DFS함수가 종료되면 M번만큼의 표본 모양수열과 같은 길이의 모양수열의 값들을 입..