본문 바로가기
알고리즘/[python] 백준 BOJ

[python] 백준 9205 맥주 마시면서 걸어가기

by Alan_Kim 2023. 3. 26.
728x90
반응형

https://www.acmicpc.net/problem/9205

 

9205번: 맥주 마시면서 걸어가기

송도에 사는 상근이와 친구들은 송도에서 열리는 펜타포트 락 페스티벌에 가려고 한다. 올해는 맥주를 마시면서 걸어가기로 했다. 출발은 상근이네 집에서 하고, 맥주 한 박스를 들고 출발한다.

www.acmicpc.net

 

문제 해결

  • 집(home)에서 목적지(end) 까지 도달 할 수 있는지 문제
  • 중간 편의점(conv)은 지나도 되고 안지나도 된다.
  • 50갈 때 마다 맥주 하나씩 없어지므로 목적지(end)까지 거리가 1000이하가 되는지 현재 위치에서 거리가 1000이하인 편의점을 하나씩 가보면서 확인
  • 편의점을 하나씩 가보는 것은 bfs로 이동하는 것이 편하다.
  • 만약 편의점을 다 돌면서 목적지(end)까지 거리가 1000이하가 되는 지점이 없으면 sad를 출력

 

CODE

import sys
input = sys.stdin.readline
from collections import deque

def bfs():
    que = deque()
    que.append(home)
    while que:
        x, y = que.popleft()
        if abs(x-end[0]) + abs(y-end[1]) <= 1000:
            print("happy")
            return
        for i in range(n):
            if visited[i] == False:
                new_x, new_y = conv[i]
                if abs(x-new_x) + abs(y-new_y) <= 1000:
                    que.append(conv[i])
                    visited[i] = True
    print('sad')
    return
for _ in range(int(input())):
    n = int(input())
    home = list(map(int, input().split()))
    conv = [list(map(int, input().split())) for _ in range(n)]
    end = list(map(int,input().split()))
    visited = [False for _ in range(n+2)]
    bfs()
728x90
반응형

'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글

[python] 백준 16637 괄호 추가하기  (0) 2023.03.28
[python] 백준 2661 좋은수열  (0) 2023.03.27
[python] 백준 2573 빙산  (0) 2023.03.26
[python] 백준 9084 동전  (0) 2023.03.22
[python] 백준 1092 배  (0) 2023.03.21

댓글