https://www.acmicpc.net/problem/9205
9205번: 맥주 마시면서 걸어가기
송도에 사는 상근이와 친구들은 송도에서 열리는 펜타포트 락 페스티벌에 가려고 한다. 올해는 맥주를 마시면서 걸어가기로 했다. 출발은 상근이네 집에서 하고, 맥주 한 박스를 들고 출발한다.
www.acmicpc.net
파이썬에서 pop()메서드를 사용하면 리스트의 가장 마지막 항목을 가져온다.
따라서, 락페스티벌을 시작점으로, 집을 도착점으로 하여 풀이를 진행하였다.
지점(편의점)을 방문할 경우 맥주의 수가 초기화 되므로, 두 지점 사이의 거리가 1000m이하일 경우 이동가능하다.
따라서 각지점별로 이동가능 여부를 판단해 문제를 해결하였다.
def beer(path):
start = path.pop() # 시작점 좌표를 가져옴
end = path[0] # 도착점의 좌표를 가져옴
next_store = [start] # 시작점을 다음 방문지점으로 지정
visited_store = [] # 한번 방문한 편의점을 다시 오지 않기 위해 리스트 생성
while next_store:
store = next_store.pop() # 현재 방문하는 지점을 가져옴
visited_store.append(store) # 방문한 지점을 리스트에 추가
for i in path:
if (abs(store[0] - i[0]) + abs(store[1] - i[1]) <= 1000) and (i not in visited_store):
# 다음 지점과의 거리가 1000이하이고, 방문한 적이 없을 때
next_store.append(i) # 방문할 지점리스트에 추가
if i == end: # 다음 지점이 도착점일 때 happy반환
return 'happy'
return 'sad' # 도착점에 도달하지 못할 때
T = int(input())
for _ in range(T):
N = int(input())
path = []
for _ in range(N + 2):
path.append(list(map(int, input().split())))
print(beer(path))
[백준/BOJ] #1036 36진수.python(파이썬) (0) | 2021.08.20 |
---|---|
[백준/BOJ] #1124 언더프라임.python(파이썬) (0) | 2021.08.19 |
[백준/BOJ] #21736 헌내기는 친구가 필요해.python(파이썬) (0) | 2021.08.06 |
[백준/BOJ] #1436 영화감독 숌.python(파이썬) (0) | 2021.08.05 |
[백준/BOJ] #2839 설탕배달.python(파이썬) (0) | 2021.08.03 |