본문 바로가기

백준

(48)
[백준/c++] BOJ 9465 - 스티커 https://www.acmicpc.net/problem/9465 9465번: 스티커 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 n (1 ≤ n ≤ 100,000)이 주어진다. 다음 두 줄에는 n개의 정수가 주어지며, 각 정수는 그 위치에 해당하는 스티커의 www.acmicpc.net 문제 설명 스티커 2n개를 그림 (a)와 같이 2행 n열로 배치한다. 스티커의 품질이 매우 좋지 않아서 한 장을 떼면, 그 스티커와 변을 공유하는 스티커는 모두 찢어져서 사용할 수 없게 된다. 각 스티커에 점수를 매기고, 점수의 합이 최대가 되도록 스티커를 떼어내려고 한다. 2n개의 스티커 중에서 점수의 합이 최대가 되면서 서로 변을 공유하지 않는 스티커 집합 점수의 최댓값을 구한다. ..
[백준/c++] BOJ 28280 - 귀납법 https://www.acmicpc.net/problem/28280 28280번: 귀납법 각 테스트케이스마다 한 줄에, $1$에서 시작해서 $2$배를 하거나 $1$을 빼는 행동을 최소 몇 번 반복해야 $k$를 만들 수 있는지 출력한다. 만약 $k$를 만들지 못한다면, 대신 Wrong proof!를 출력한다. www.acmicpc.net 문제 설명 1. n = k일 때 성립하면 n = 2k 일 때도 성립한다. 2. n = k > 1 일 때 성립하면 n = k - 1일 때도 성립한다. 양의 정수 k가 주어질 때, 정수 1에서 시작하여 현재 값을 2배 하거나 1을 뺀 값으로 바꾸는 행동을 몇 번 해야 k를 만들 수 있는지 계산한다. 테스트 케이스 개수 T (1 n; while (n--) { cin >> m; ..
[백준/c++] BOJ 14888 - 연산자 끼워넣기 https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, 곱 www.acmicpc.net 문제 설명 n개의 수로 이루어진 수열이 주어진다. 또, 수와 수 사이에 끼워넣을 수 있는 n-1개의 연산자가 주어진다. (+, -, *, /) 수와 수 사이에 연산자를 하나씩 넣어서, 수식을 하나 만들 수 있다. 계산은 연산자 우선 순위를 무시하고 앞에서부터 진행한다. n개의 수와 n-1개의 연산자가 주어졌을 때, 만들 수 있는 식의 결과..
[백준/c++] BOJ 1245 - 농장 관리 https://www.acmicpc.net/problem/1245 1245번: 농장 관리 첫째 줄에 정수 N(1 < N ≤ 100), M(1 < M ≤ 70)이 주어진다. 둘째 줄부터 N+1번째 줄까지 각 줄마다 격자의 높이를 의미하는 M개의 정수가 입력된다. 격자의 높이는 500보다 작거나 같은 음이 아닌 정수 www.acmicpc.net 문제 설명 NxM 크기의 농장이 있다. 산봉우리가 몇 개 있는지 세려고 한다. 산봉우리는 같은 높이를 가지는 하나의 격자 혹은 인접한 격자들의 집합으로 이루어져 있다. ("인접하다"의 정의는 X좌표 차이와 Y좌표 차이가가 모두 1 이하일 경우로 정의된다.) 격자 내에 산봉우리의 개수가 총 몇 개인지 구한다. N(1 < N = m; } void bfs(int i, in..
[백준/c++] BOJ 14395 - 4연산 https://www.acmicpc.net/problem/14395 14395번: 4연산 첫째 줄에 정수 s를 t로 바꾸는 방법을 출력한다. s와 t가 같은 경우에는 0을, 바꿀 수 없는 경우에는 -1을 출력한다. 가능한 방법이 여러 가지라면, 사전 순으로 앞서는 것을 출력한다. 연산의 아 www.acmicpc.net 문제 설명 정수 s가 주어진다. 정수 s를 t로 바꾸는 최소 연산 횟수를 구하는 프로그램을 작성한다. 사용할 수 있는 연산은 아래와 같다. 1. s = s + s; ( 출력 : + ) 2. s = s - s; ( 출력 : - ) 3. s = s * s; ( 출력 : * ) 4. s = s / s; ( 출력 : / ) ( s가 0이 아닐 때만 사용 가능) (1 > a >> b; if (a =..
[백준/c++] BOJ 16234 - 인구 이동 https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 문제 설명 NxN 크기의 땅이 있고, 1x1개의 칸으로 나누어져 있다. r행 c열에 있는 나라에는 A[r][c] 명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 1. 국경선을 공유하는 두 나라의 인구 차이가 L명 이상, R명 이하라면, 두 나라가 공유하는 구경선을 오늘 하루 동안 연다. 2. 국경선이 모두 열렸다면, 인구 이동을 시작한다. 3. 국경선이 열린 인접한 칸의 ..
[백준/c++] BOJ 23747 - 와드 https://www.acmicpc.net/problem/23747 23747번: 와드 와드를 설치하지는 않았지만, 한별이의 최종 위치의 위, 아래, 왼쪽, 오른쪽 칸은 시야로 확보하고 있다. 지나온 경로를 모두 시야로 확보하지는 않는다. www.acmicpc.net 문제 설명 RxC 격자가 있다. 자신이 위치한 칸에서 위, 아래, 왼쪽, 오른쪽으로 인접한 칸만을 볼 수 있지만, 와드를 놓으면 와드가 놓인 칸이 속한 영역에 있는 모든 칸을 볼 수 있게 된다. 인접한 칸이 같은 문자라는 것은 두 칸이 같은 영역에 속해 있음을 의미한다. 여행 기록을 나타내는 200000 글자 이하의 문자열이 주어진다. U, D, L, R, W 중 하나도 이루어져 있으며, 각각 왼쪽, 아래쪽, 왼쪽, 오른쪽, 와드 설치를 의..
[백준/c++] BOJ 27978 - 보물 찾기 2 https://www.acmicpc.net/problem/27978 27978번: 보물 찾기 2 첫 번째 줄에 보물 지도의 세로 길이 $H$, 가로 길이 $W$가 주어진다. $(3 \le H, W \le 500)$ 두 번째 줄부터 $H$개의 줄에 걸쳐 지도가 주어진다. 지도는 .#*K 중 하나로만 나타내져 있으며, 각각 바다, 암 www.acmicpc.net 문제 설명 WxH 지도가 있다. 지도는 ., #, *, K로 이루어져 있다. 각각 바다, 암초, 보물, 배를 의미하며 배는 암초 위를 지나가지 못한다. 매번 인접한 8칸 중 한 곳으로 이동할 수 있는데, 현재 (r, c) 위치에 자리 잡고 있다면 (r - 1, c + 1), (r, c + 1), (r + 1, c + 1)로는 연료 소모 없이 이동할 ..