반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 오미크론 자가격리
- 사회조사분석사 2급 독학
- 백준
- 알고리즘
- 현대엔지니어링 수요예측
- 공모주
- 사회조사분석사2급실기신청
- 사회조사분석사2급실기신청꿀팁
- 벽부수고이동하기 파이썬
- 백준 알고리즘
- 머신러닝
- 사이킷런
- 사회조사분석사 2급 필기 시험시간
- 너비우선탐색
- 현대엔지니어링
- 사회조사분석사 2급
- 공모주청약
- BFS
- 시물레이션
- 정렬
- 사회조사분석사 2급 공부방법
- 사회조사분석사 2급 접수
- 파이썬 정렬
- 사회조사분석사 2급 필기 요약정리
- 2월공모주
- 그리디
- 사회조사분석사 2급 필기 공부방법
- 공모주 청약
- 사회조사분석사 2급 기출문제집
- DFS
Archives
- Today
- Total
세상을 바꾸는 데이터
[백준 1697번] 숨바꼭질 - 파이썬 본문
문제 링크:
https://www.acmicpc.net/problem/1697
1697번: 숨바꼭질
수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일
www.acmicpc.net
풀이 유형:
그래프 이론, 그래프 탐색, 너비 우선 탐색
풀이 과정:
이 문제는 1차원상의 좌표에서 수빈이가 동생을 만나기 위한 최소 시간을 도출하는 것이다.
먼저 모든 좌표(100000개)를 0으로 초기화한 리스트를 만든다.
여기에 BFS를 실행하여 특정 위치를 방문하면, 방문한 시간을 표시해준다.
deque을 이용해 큐를 사용하여 풀어보자.
풀이 코드:
# 1697번 숨바꼭질
from collections import deque
# 입력값 받기
n, k = map(int, input().split())
# 움직일 수 있는 최대 좌표는 100000
max_num = 100000
# 해당 위치에 도착했을 때 시간을 표시하는 리스트
visited = [0] * (max_num + 1) # 현재는 시작하지 않았기에 0으로 모두 초기화
# bfs 함수 정의
def bfs():
q = deque()
# 수빈이 출발점 위치 큐에 삽입
q.append(n)
while q:
x = q.popleft()
# 수빈이 위치가 동생의 위치와 같다면 반복문 종료
if x == k:
print(visited[x])
break
# 이동할 수 있는 방향에 대하여
for j in (x-1, x+1, x*2):
# 주어진 범위 내에 있고 아직 방문하지 않았다면
if 0 <= j <= max_num and not visited[j]:
# 이동한 위치에 현재 이동한 시간 표시
visited[j] = visited[x] + 1
# 큐에 추가
q.append(j)
# bfs 실행
bfs()
728x90
반응형
'PS Study > BOJ(백준)' 카테고리의 다른 글
[백준 14226번] 이모티콘 - 파이썬 (61) | 2022.02.24 |
---|---|
[백준 13913번] 숨바꼭질 4 - 파이썬 (63) | 2022.02.23 |
[백준 9095번] 1, 2, 3 더하기 - 파이썬 (47) | 2022.02.21 |
[백준 2529번] 부등호 - 파이썬 (28) | 2022.02.21 |
[백준 14888번] 연산자 끼워넣기 - 파이썬 (49) | 2022.02.15 |
Comments