[2025-08-02] 최장 100일 연속 문제 해결
·
PS/ETC
열심히 정진하겠습니다.
[BOJ 13913][C++] 숨바꼭질 4
·
PS/BOJ
https://www.acmicpc.net/problem/13913문제 요약수빈이는 현재 위치 `N` 에 있고, 동생은 `K` 에 있다. 수빈이는 아래의 세 가지 방법으로 이동할 수 있다.`X − 1` 로 한 칸 이동`X + 1` 로 한 칸 이동`X × 2` 위치로 순간이동수빈이가 동생에게 가장 빠르게 도달하는 시간과, 그때 지나온 경로를 출력하고자 한다. 예제 입력5 17예제 출력45 10 9 18 17풀이 과정이 문제는 `BFS` 를 통해 최단 시간과 경로를 동시에 추적하는 문제다.`dist[]` : 각 위치까지의 최소 시간을 저장하는 배열`prev_pos[]` : 해당 위치에 도달하기 직전 위치를 저장하는 배열`BFS` 를 돌리면서 아래의 로직을 진행한다.다음 위치가 처음 방문되는 곳이면 `dist..
[BOJ 12851][C++] 숨바꼭질 2
·
PS/BOJ
https://www.acmicpc.net/problem/12851문제 요약수빈이는 현재 위치 `N` 에 있고, 동생은 `K` 에 있다. 수빈이는 아래의 세 가지 방법으로 이동할 수 있다.`X − 1` 로 한 칸 이동`X + 1` 로 한 칸 이동`X × 2` 위치로 순간이동수빈이는 이 세 가지 방법을 이용하여 동생이 있는 위치까지 가장 빠른 시간에 도달하고 싶다.이때, 가장 빠른 시간으로 도달하는 방법의 수도 함께 구해야 한다. 예제 입력5 17예제 출력42풀이 과정이 문제는 최단 시간과 그 경로의 수를 동시에 구하는 `BFS` 문제다.`dist[i]` : `i` 위치까지 도달하는 최소 시간`cnt[i]` : `i` 위치까지 최소 시간으로 도달하는 경우의 수`BFS` 를 돌리면서 아래의 로직을 진행한다...
[BOJ 4179][C++] 불!
·
PS/BOJ
https://www.acmicpc.net/problem/4179문제 요약지훈이가 있는 미로에 불이 났다. 지훈이와 불은 매 분마다 한칸씩 이동할 수 있고, 상하좌우로 이동이 가능하다. 불은 각 지점에서 네 방향으로 확산되며, 지훈이와 불은 `#` 으로 된 벽을 넘을 수 없다. 지훈이가 탈출할 수 있다면 가장 빠른 탈출시간을 출력하고, 아니라면 `IMPOSSIBLE` 을 출력한다. 예제 입력4 4#####JF##..##..#예제 출력3풀이 과정이 문제는 불과 지훈의 움직임을 각각 `BFS` 로 시뮬레이션하여 탈출 경로를 찾는 문제이다. 먼저, 불이 번지는 시간을 계산하기 위해 불의 초기 위치들을 큐에 넣고 BFS를 수행한다.이때, 불이 도달하는 시간을 2차원 배열 fire에 기록하며, 벽이나 이미 불이 ..
[BOJ 14626][C++] ISBN
·
PS/BOJ
https://www.acmicpc.net/problem/14626문제 요약`13` 자리로 이루어진 `ISBN` 번호가 있다. 이 번호에서 마지막 번호자리인 `13` 번째는 체크기호 라고 한다. 체크기호는 홀수자리를 `x1` , 짝수자리를`x3` 하여 모든 합친 수를 `10` 으로 나누었을 때 `0` 이 되는 숫자이다. 이러할 때, 손상된 자리의 숫자가 몇인지 구하는 프로그램을 작성한다. 예제 입력9788968322*73예제 출력2풀이 과정`*` 의 인덱스를 `find` 함수를 통해 알아낸다. `*` 자리를 제외한 나머지 자리의 숫자들을 미리 더한다. 이후 `*` 인덱스에 숫자를 `for` 루프를 통해 숫자 `0 ~ 9` 를 전부 대입하고 나머지가 `0` 이면 출력 후 반복문을 빠져나온다. 정답 코드#i..