일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 그래프
- HUFS 모각코 캠프
- MySQL
- 명품자바
- AWS
- react
- 그리디
- 백준 2512번
- 자바
- 백준 3085번
- java_programming
- 백준
- 백준 17451번
- 머신러닝과 딥러닝
- 백준 18310번
- 모각코
- 백준 1331번
- 알고리즘
- 백준 15787번
- 백준 1987
- 다이나믹프로그래밍
- 깃헙
- ubuntu
- 다이나믹 프로그래밍
- javascript
- SWEA 15612번
- 백준 1253번
- Python
- 백준 16918번
- SQL
Archives
- Today
- Total
차곡차곡
[BOJ/Python] 백준 9205번 - 맥주 마시면서 걸어가기 본문
백준 #9205 맥주 마시면서 걸어가기
from collections import deque
import sys
input = sys.stdin.readline
def can_go(now, dest):
if abs(now[0] - dest[0]) + abs(now[1] - dest[1]) <= 1000:
return True
def bfs(home, cvs_num, cvs, fesv, visited):
q = deque()
q.append(home)
while q:
now = q.popleft()
if can_go(now, fesv): # 도착지까지 갈 수 있는지
return True
for i in range(cvs_num): # 편의점까지 갈 수 있는지
if visited[i] and can_go(now, cvs[i]):
q.append(cvs[i])
visited[i] = False
return False
t = int(input()) # 테스트 케이스 개수
for _ in range(t):
cvs_num = int(input()) # 편의점 개수
home = tuple(map(int, input().split())) # 상근이네 집 좌표
cvs = [tuple(map(int, input().split())) for _ in range(cvs_num)] # 편의점 좌표
fesv = tuple(map(int, input().split())) # 페스티벌 좌표
if bfs(home, cvs_num, cvs, fesv, [True for _ in range(cvs_num)]):
print("happy")
else:
print("sad")
BFS로 푼 문제! 편의점 위치가 가까운 순으로 입력되는 줄 알고 단순하게 연산식으로 풀었다가 순서대로 들어오는 것이 아니라고 해서 너비우선탐색으로 다시 구현했다.
- can_go 함수는 현재 위치에서 목적지까지 갈 수 있는지 계산한다.
- bfs는 현재 위치에서 페스티벌까지 갈 수 있는지, 갈 수 없다면 편의점까지 갈 수 있는지 can_go 함수를 통해 반복 확인한다.
- queue에서 좌표를 pop하여 현재 위치를 now에 저장한다.
- 현재 위치(now)에서 페스티벌까지 갈 수 있다면 바로 True를 리턴한다.
- 페스티벌까지 갈 수 없다면 갈 수 있는 편의점이 있는지 확인한다.
- 갈 수 있는 편의점이 있다면 해당 편의점 좌표를 queue에 담는다. 그리고 해당 편의점을 queue에 담았음을 visited 리스트를 통해 표시한다.
- 결국 queue에는 현재 위치에서 갈 수 있는 좌표가 담기게 된다.
- 만약 queue가 빌 때까지 True를 리턴하지 못 했다면 페스티벌까지 갈 수 없음을 의미하여 False를 리턴한다.
'CS > Algorithm' 카테고리의 다른 글
[BOJ/Python] 백준 16918번 - 봄버맨 (0) | 2022.08.03 |
---|---|
[BOJ/Python] 백준 2512번 - 예산 (0) | 2022.08.03 |
[파이썬 알고리즘 인터뷰] 12장 그래프 (0) | 2022.07.15 |
[BOJ/Python] 백준 13414번 - 수강신청 (0) | 2022.07.15 |
[BOJ/Python] 백준 2002번 - 추월 (0) | 2022.07.09 |
Comments