본문 바로가기

CS/알고리즘 문제풀이

(3)
[Kotlin] 백준 2178 (ft. BFS) 📚 백준 2178 BFS 문제 직접 풀어보려는 사람들을 위해 접근 방법에 대한 힌트부터 작성한다. 전체 코드는 최하단을 확인 바람 미로 탐색 문제 유형을 채험해 보는데 가장 좋은 문제라고 생각된다. 일반적으로 이런 문제는 큐(Queue)에 현재 위치의 행과 열의 인덱스를 저장한다. 이 문제의 경우, 각 칸을 방문할 때마다 해당 칸까지 이동하는 데 필요한 최소 이동 횟수를 계산하면 된다. 나는 위치 정보 저장을 위한 큐(Queue)와 이동 횟수 저장을 위한 2차원 List를 사용했다. 그리고 현 위치를 기준으로 상하좌우 한칸씩만 검사해주며 진행하는 방식으로 풀었다. 큐에 저장할 값 - 위치 정보: 현재 위치의 행과 열 인덱스, 예를 들어 현재 위치가 2행 3열이면, Pair(2, 3)으로 큐에 저장했다. ..
[백준/Python] 1110: 더하기 사이클 ‣​ 문제 링크 https://www.acmicpc.net/problem/1110 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net ‣​ 접근 방법 문제를 잘 따라가면 접근 방법을 파악할 볼 수 있다. 문제의 예시처럼 26을 통해 접근방법을 생각해보자. 26은 10보다 크기 때문에 26이 유지된다. 각 자리수를 더해서 얻을 수 있는 수는 2+6 = 8이다. 그럼 새로 만들어지는 수는 26의 1의 자리수인 6과 각 자리수를 더해 얻은 8의 1의 자리수인 8이 붙여 68이 된다. 아직 68과 26은 ..
[백준/Python] 13909 창문 닫기 ‣​ 문제 링크 https://www.acmicpc.net/problem/13909 13909번: 창문 닫기 서강대학교 컴퓨터공학과 실습실 R912호에는 현재 N개의 창문이 있고 또 N명의 사람이 있다. 1번째 사람은 1의 배수 번째 창문을 열려 있으면 닫고 닫혀 있으면 연다. 2번째 사람은 2의 배수 번째 www.acmicpc.net ‣​ 접근 방법 창문의 상태가 바뀌는 것은 해당 창문 번호의 약수의 개수와 관련이 있다. 예를 들어, 12번 창문의 경우 1, 2, 3, 4, 6, 12의 6개 약수가 있으므로 6번 상태가 바뀌게 된다. 그럼 0에서 6번 상태가 바뀐 12는 최종적으로 어떤 상태일까? 아래는 12번째의 창문의 상태가 자신의 약수번째 사람일 경우 어떻게 바뀔지 표로 나타낸 것이다. 1 2 3..