Problem Solving/Baekjoon Online Judge
-
[백준] 1038 감소하는 수Problem Solving/Baekjoon Online Judge 2020. 4. 15. 16:53
✔️ 문제 링크 https://www.acmicpc.net/problem/1038 1038번: 감소하는 수 음이 아닌 정수 X의 자릿수가 가장 큰 자릿수부터 작은 자릿수까지 감소한다면, 그 수를 감소하는 수라고 한다. 예를 들어, 321과 950은 감소하는 수지만, 322와 958은 아니다. N번째 감소하는 수를 출력하는 프로그램을 작성하시오. 0은 0번째 감소하는 수이고, 1은 1번째 감소하는 수이다. 만약 N번째 감소하는 수가 없다면 -1을 출력한다. www.acmicpc.net ✔️ 문제 이해 1. 감소하는 수들은 아래와 같다. [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ... 20, 21 ... 30, 31, 32 ... 40, 41, 42, 43 .... 9,876,543,21..
-
[백준] 16234 인구이동Problem Solving/Baekjoon Online Judge 2020. 3. 26. 16:39
[문제이해] 1. NxN 크기의 땅이 있다. 각각의 땅에는 나라가 하나씩 존재한다. 2. r행 c열에 있는 나라는 map[r][c] 명이 살고 있다. 3. 모든 나라는 1x1 크기이고 모든 국경선은 정사각형 형태이다. 4. 인구이동이 시작된다. 인구 이동은 아래와 같은 방법으로 진행된다. 더 이상 인구 이동이 없을때까지 지속된다. 국경선을 공유하는 두 나라의 인구차이가 L명 이상, R명 이하라면, 두 나라가 공유하는 국경선을 하루동안 연다. 위의 조건에 의해 열어야하는 국경선이 모두 열렸다면, 인구 이동을 시작한다. 국경선이 열려있어 인접한 칸만을 이용해 이동할 수 있으면, 그 나라를 하루동안은 연합 이라고 한다. 연합을 이루고 있는 각 칸의 인구수는 (연합의 인구수)/(연합을 이루고 있는 칸의 개수)가..
-
[백준] 17141 연구소 2Problem Solving/Baekjoon Online Judge 2020. 3. 26. 14:48
[문제이해] 1. NxN 크기의 연구소가 있다. 연구소는 빈칸(0), 벽(1), 바이러스가 위치할 수 있는 후보 공간(2)으로 표현된다. 2. 승원이는 연구소의 특정 위치에 바이러스를 M개 놓을 것이다. 3. M개가 놓여진후 바이러스는 상,하, 좌, 우로 인접한 모든 빈 칸으로 동시에 복제되며, 1초의 시간이 걸린다. 4. 연구소의 상태와 M이 주어졌을 때 모든 연구소 빈 칸에 바이러스가 퍼지는 최소 시간을 구해라 5. 첫째 줄에 연구소의 크기 N(5 ≤ N ≤ 50), 놓을 수 있는 바이러스의 개수 M(1 ≤ M ≤ 10)이 주어진다. 6. 둘째 줄에 연구소의 상태가 주어진다. [설계] 1. 연구소에는 바이러스가 위치할 수 있는 후보 공간들이 존재한다. 2. 이 후보 공간들에서 M개를 뽑아서 바이러스를..
-
[백준] 16933 벽 부수고 이동하기 3Problem Solving/Baekjoon Online Judge 2020. 3. 24. 12:57
[문제이해] 1. NxM 으로 표현되는 map이 있다. (0은 이동할 수 있는 공간이고, 1은 이동할 수 없는 벽이다.) 2. 당신은 (1,1)에서 (N,M)위치로 최단 경로로 이동 해야한다. 3. 이 문제에는 낮과 밤이 존재한다. 가장 처음에 이동할 때는 낮이고, 이동할 때마다 낮과 밤이 바뀐다. 4. 이동하지 않고 같은 칸에 머무를 수 있는데, 이때도 낮과 밤이 바뀐다. 3. map에서 벽을 만나면, 벽을 부술 수 있다. (벽은 최대 k개 만큼 부술 수 있다.) 4. 단, 벽은 아침에만 부술 수 있다. 5. map이 주어지고 N, M, k가 주어졌을 때 최단 경로를 구해내야 한다. [설계] 1. 최단경로를 구하는 문제이므로 BFS를 사용하여 구현한다. 2. BFS로 방문하는 정점의 정보는 4가지이다...
-
[백준] 16197 두 동전Problem Solving/Baekjoon Online Judge 2020. 3. 8. 23:16
[문제이해] 1. N x M map에는 두 개의 동전(o) 벽(#)과 빈 칸(.)이 존재한다. (두 동전의 위치는 다름) 2. 두 동전을 동시에 움직일 수 있는 버튼이 있다. (방향은 상하좌우 4방향) 3. 두 동전 중 하나만 map에서 떨어뜨리기 위해 버튼을 최소 몇 번 눌러야하는지 구해야한다. 4. 단, 동전을 떨어뜨리거나 버튼을 10번보다 많이 눌러야 한다면, -1을 출력한다. [설계] 1. x,y 구조체에 대한 구조체를 만들어 두 동전의 위치좌표를 간단하게 표현한다. 2. 4 방향의 버튼을 누르는 경우의 수를 재귀적으로 구현한다. 3. 재귀단계가 10이 넘어가면, 실패 (-1 출력) 4. 한 개의 동전만 떨어졌을때 버튼을 누른 횟수가 최소인지 체크하고, 최소이면 값을 갱신한다. 5. 두 동전이 모..
-
[백준] 13460 구슬 탈출 2Problem Solving/Baekjoon Online Judge 2020. 3. 6. 19:23
[문제이해] 1. 맵에는 벽(#), 빨간구슬(R), 파란구슬(B), 구멍(O)이 각각 1개씩 존재한다. 2. 4가지 기울이기(왼쪽, 오른쪽, 위쪽, 아래쪽)를 통해 구슬을 굴릴 수 있다. - 빨간구슬이 구멍에 빠지면 성공 - 파란구슬이 구멍에 빠지면 실패 - 빨간구슬과 파란구슬 모두 구멍에 빠져도 실패 - 기울이기를 10번 초과하면 실패 3. 보드의 상태가 주어졌을 때 최소 몇 번만에 빨간 구슬을 구멍을 통해 빼낼 수 있는지를 계산해야한다. [설계] 1. 빨간구슬과 파란구슬에 대해 상,하,좌,우 4방향 BFS를 적용한다. 2. 예를들어 맵을 오른쪽으로 기울였으면, 빨간구슬과 파란구슬 둘 다 오른쪽 방향 BFS를 적용한다. 3. 큐에다가 빨간구슬 x, y 좌표와 파란구슬 x, y 좌표 그리고 기울인 횟수 ..