일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 코드트리
- SQL
- 실습
- 장고
- B대면노래방
- Kruskal
- 프로그래머스
- minimum spanning tree
- DFS
- 동적계획법
- Planned
- 그리디알고리즘
- 함밥
- 알고리즘
- 최소스패닝트리
- 백트래킹
- 마라마라빔
- MyPlaylist
- Bellman-Ford
- codetree
- BFS
- django
- 종합설계
- 모각코
- DP
- 소프트웨어공학
- 백준
- 데이터베이스
- 파이썬
- programmers
Archives
- Today
- Total
Leta Learns
[모각코] 210825 Today I Learned 본문
<문제 9205번 - 맥주 마시면서 걸어가기>
문제를 처음 봤을 때 이해가 가지 않아서 무슨 말인지 한참을 읽었다.
우선 50m마다 맥주를 마셔야 하고, 맥주는 20개 씩 들고 갈 수 있다는 말이 노드와 노드 사이의 거리가 1000m가 넘어서는 안된다는 뜻임을 캐치해야 했다.
그 후에는... 누가누가 코드로 잘 만들어내느냐....
dxdy기법 안 쓴 bfs 문제 오랜만이라 재밌고.. 어려웠다.
import sys
from collections import deque
input = sys.stdin.readline
def bfs():
q = deque()
q.append([home[0], home[1]])
while q:
x, y = q.popleft()
if abs(x - fest[0]) + abs(y - fest[1]) <= 1000:
print("happy")
return
for i in range(n):
if not visited[i]:
new_x, new_y = conv[i]
if abs(x - new_x) + abs(y - new_y) <= 1000:
q.append([new_x, new_y])
visited[i] = 1
print("sad")
return
t = int(input())
for i in range(t):
n = int(input())
home = [int(x) for x in input().split()]
conv = []
for j in range(n):
x, y = map(int, input().split())
conv.append([x, y])
fest = [int(x) for x in input().split()]
visited = [0 for i in range(n+1)] #home 제외
bfs()
조금 더 자세한 설명
2021.08.26 - [Coding/백준] - [Python] 백준 9205번 - 맥주 마시면서 걸어가기
'HUFS > HUFS 모각코 캠프' 카테고리의 다른 글
[모각코] 220720 Today I Learned (0) | 2022.07.20 |
---|---|
[모각코] 2021 HUFS 모각코 캠프 회고 (0) | 2021.08.27 |
[모각코] 210821 Today I Learned (0) | 2021.08.21 |
[모각코] 210818 Today I Learned (0) | 2021.08.18 |
[모각코] 210811 Today I Learned (0) | 2021.08.11 |
Comments