본문 바로가기

전체 글

(90)
[백준/c++] BOJ 14923 - 미로 탈출 https://www.acmicpc.net/problem/14923 14923번: 미로 탈출 홍익이는 사악한 마법사의 꾐에 속아 N x M 미로 (Hx, Hy) 위치에 떨어졌다. 다행히도 홍익이는 마법사가 만든 미로의 탈출 위치(Ex, Ey)를 알고 있다. 하지만 미로에는 곳곳에 마법사가 설치한 벽이 www.acmicpc.net 문제 설명 NxM 미로의 { Hx, Hy } 위치에서 시작하여, { Ex, Ey } 위치로 이동하려고 한다. 0은 길, 1은 벽을 나타낸다. 미로를 탈출하면서 단 한번, 벽을 뚫을 수 있을 때 미로를 탈출할 수 있는지 알아보고 가장 빠른 경로의 거리 D를 구한다. 인접한 칸으로 이동하는 데는 똑같이 시간 1이 들고, 벽을 부수는 데는 시간이 걸리지 않는다. N, M (2 n >>..
[백준/c++] BOJ 16173 - 점프왕 쩰리 (Small) https://www.acmicpc.net/problem/16173 16173번: 점프왕 쩰리 (Small) 쩰리는 맨 왼쪽 위의 칸에서 출발해 (행, 열)로 나타낸 좌표계로, (1, 1) -> (2, 1) -> (3, 1) -> (3, 3)으로 이동해 게임에서 승리할 수 있다. www.acmicpc.net 문제 설명 NxN 보드 내부에서 움직이는 점프 게임을 하려고 한다. 출발점은 가장 왼쪽, 가장 위의 칸이며, 가장 오른쪽, 가장 아래 칸에 도달하면 승리한다. 이동 가능한 방향은 오른쪽과 아래 뿐이고, 이동할 때는 현재 밟고 있는 칸에 쓰여진 숫자만큼 이동하여야 한다. 이동 중 방향 조절 불가능하며, 끝 점에 도달할 수 있다면 "HaruHaru"를, 도달할 수 없다면 "Hing"을 출력한다. N (2..
[백준/c++] BOJ 1449 - 수리공 항승 https://www.acmicpc.net/problem/1449 1449번: 수리공 항승 첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 1,000보다 작거나 www.acmicpc.net 문제 설명 물이 새는 파이프를 수리하려고 한다. 파이프의 가장 왼쪽에서 정수만큼 떨어진 거리에서만 물이 샌다. 길이가 L인 테이프를 무한개 가지고 있고, 물을 막을 때 그 위치의 좌우 0.5만큼 간격을 줘서 막으려고 한다. 테이프를 자를 수 없고, 겹쳐서 붙이는 것은 가능할 때, 수리에 필요한 테이프의 최소 개수를 구한다. 물이 새는 곳 N (1 m; for (int i = 0; ..
[백준/c++] BOJ 16197 - 두 동전 https://www.acmicpc.net/problem/16197 16197번: 두 동전 N×M 크기의 보드와 4개의 버튼으로 이루어진 게임이 있다. 보드는 1×1크기의 정사각형 칸으로 나누어져 있고, 각각의 칸은 비어있거나, 벽이다. 두 개의 빈 칸에는 동전이 하나씩 놓여져 있고, www.acmicpc.net 문제 설명 NxM 크기의 보드와 4개의 버튼, 두 개의 동전이 있다. 두 동전은 다른 위치에 존재하며, 버튼을 이용해 위, 아래, 오른쪽, 왼쪽으로 두 동전이 동시에 한칸 움직인다. 이동하려는 곳에 벽이 있으면 이동하지 않으며, 이동하려는 방향에 칸이 없으면 동전을 보드 바깥으로 떨어진다. 하나의 동전만 떨어뜨리기 위해 버튼을 최소 몇 번 눌러야 하는지 구한다. 단, 두 동전을 떨어뜨릴 없거나,..
[백준/c++] BJO 26215 - 눈 치우기 https://www.acmicpc.net/problem/26215 26215번: 눈 치우기 집 2와 집 3 앞의 눈을 치우고, 집 2와 집 3 앞의 눈을 치우고, 집 1과 집 3 앞의 눈을 치운 뒤 집 3 앞의 눈을 두 번 치우면 5분만에 모든 집 앞의 눈을 치울 수 있다. www.acmicpc.net 문제 설명 집의 수 N이 주어진다. 각각의 집 앞에는 눈이 쌓여 있다. 집 앞에 눈을 치우려고 하는데, 눈을 치울 때는 한번에 두 집을 선택하여 각각 1만큼 치우거나 한 집을 선택해서 그 집만 1만큼 치울 수 있다. 눈을 전부 치울 때까지 걸리는 최소 시간은? 단, 24시간 (1440분)이 넘게 걸릴 경우, -1을 출력한다. N (1 a; v.push_back(a); } if (n == 1) { if (..
[백준/c++] BOJ 11508 - 2+1세일 https://www.acmicpc.net/problem/11508 11508번: 2+1 세일 KSG 편의점에서는 과일우유, 드링킹요구르트 등의 유제품을 '2+1 세일'하는 행사를 하고 있습니다. KSG 편의점에서 유제품 3개를 한 번에 산다면 그중에서 가장 싼 것은 무료로 지불하고 나머지 두 www.acmicpc.net 문제 설명 편의점에서 2+1 세일을 진행한다. 한번의 3개의 유제품을 살 경우에만, 그 중에서 가장 값이 싼 것을 무료로 지불한다. 총 N팩의 유제품을 구입하려고 할 때, 유제품을 모두 살 때 필요한 최소비용을 출력한다. 유제품의 수 N과 각 유제품의 가격 Ci가 주어진다. N (1 a; v.push_back(a); } sort(v.rbegin(), v.rend()); int ans =..
[백준/c++] BOJ 20310 - 타노스 https://www.acmicpc.net/problem/20310 20310번: 타노스 어느 날, 타노스는 0과 1로 이루어진 문자열 $S$를 보았다. 신기하게도, $S$가 포함하는 0의 개수와 $S$가 포함하는 1의 개수는 모두 짝수라고 한다. 갑자기 심술이 난 타노스는 $S$를 구성하는 문자 www.acmicpc.net 문제 설명 0과 1로 이루어진 문자열 S가 있는데, S가 포함하는 0의 개수와 1의 개수는 각각 짝수이다. S를 구성하는 문자 중 절반의 0과 절반의 1을 제거하여 새로운 문자열 S'를 만들 때, 만들 수 있는 문자열 중 사전 순으로 가장 빠른 S'를 구해야 한다. (2 str; int len = strlen(str); for (int i = 0; i < len; i++) { if ..
[백준/c++] BOJ 12886 - 돌 그룹 https://www.acmicpc.net/problem/12886 12886번: 돌 그룹 오늘 강호는 돌을 이용해 재미있는 게임을 하려고 한다. 먼저, 돌은 세 개의 그룹으로 나누어져 있으며 각각의 그룹에는 돌이 A, B, C개가 있다. 강호는 모든 그룹에 있는 돌의 개수를 같게 만들려 www.acmicpc.net 문제 설명 돌들이 세개의 그룹으로 나누어져 있고, 각각의 그룹에는 돌이 A, B, C개 있다. 세 개의 그룹들 중, 크기가 같지 않은 두 그룹을 골라 작은 쪽은 X, 큰 쪽을 Y라고 정한다. X에 있는 돌의 개수를 X+X개로, Y에 있는 돌의 개수를 Y-X개로 만든다. 같은 행동을 반복하여 세 그룹의 돌의 개수를 모두 같게 만들 수 있다면 1, 아니면 0을 출력한다. A, B, C (1 a ..