Skip to content

Commit

Permalink
2024-08-25 숨바꼭질
Browse files Browse the repository at this point in the history
  • Loading branch information
janghw0126 committed Aug 25, 2024
1 parent 7b2e5d0 commit 77c7858
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 0 deletions.
33 changes: 33 additions & 0 deletions janghw0126/BFS/숨바꼭질.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import sys
from collections import deque

def bfs_find_min_time(start, target, max_pos):
# BFS를 위한 큐를 생성함
queue = deque([start])

while queue:
current_pos = queue.popleft()

# 현재 위치가 목표 위치와 같으면, 거리 배열에서 시간을 출력함
if current_pos == target:
print(time_taken[current_pos])
return

# 반복문을 통해 이동할 수 있는 세 가지 경우를 고려함
for next_pos in (current_pos - 1, current_pos + 1, current_pos * 2):
# 다음 위치가 범위 내에 있고 아직 방문하지 않은 위치일 경우
if 0 <= next_pos <= max_pos and time_taken[next_pos] == 0:
# 현재 위치에서 1초가 추가된 시간을 저장함
time_taken[next_pos] = time_taken[current_pos] + 1
# 다음 위치를 큐에 추가함
queue.append(next_pos)

# 초기 설정을 함 (문제에서 주어진 최대 위치 값을 뜻함)
MAX_POSITION = 100000
# 수빈이의 시작 위치 n과 동생의 위치 k를 입력받음
n, k = map(int, sys.stdin.readline().split())
# 각 위치까지 걸리는 시간을 기록하는 배열을 초기화함
time_taken = [0] * (MAX_POSITION + 1)

# BFS를 실행함
bfs_find_min_time(n, k, MAX_POSITION)
1 change: 1 addition & 0 deletions janghw0126/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,5 @@
| 6차시 | 2024.8.3 | BFS | <a href= "https://www.acmicpc.net/problem/14940">쉬운 최단거리</a> |[#140](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/140) |
| 7차시 | 2024.8.8 | DFS | <a href= "https://school.programmers.co.kr/learn/courses/30/lessons/92343">양과 늑대</a> |[#145](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/145) |
| 8차시 | 2024.8.19 | 최소 힙 | <a href= "https://www.acmicpc.net/problem/2075">N번째 큰 수</a> |[#145](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/147) |
| 9차시 | 2024.8.25 | BFS | <a href= "https://www.acmicpc.net/problem/1697">숨바꼭질</a> |[#149](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/149) |
---

0 comments on commit 77c7858

Please sign in to comment.