새로운 블로그로 이전 작업을 진행하고 있어 포스트가 새로 작성되고 있지 않습니다.

빠른 시일 내에 새로운 블로그로 인사드리겠습니다.

새로운 블로그 : https://unho.vercel.app/

본문 바로가기
알고리즘 문제풀이/Python

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

by 언호 2022. 1. 21.

📖 문제


🧑🏻‍💻 풀이 과정

1) 문제 이해 및 접근

특정 지점(출발점과 이동이 가능한 편의점)에서 맥주 20병을 가지고 최대로 이동할 수 있는 범위 내에 도착지나 편의점이 있는지 여부를 탐색하였습니다.

2) 알고리즘

  • 너비 우선 탐색

3) 풀이 코드

사용 언어 - Python

import sys
from collections import deque
sys.stdin = open('input.txt')

T = int(sys.stdin.readline())       # 테스트케이스 개수

for _ in range(T):
    N = int(sys.stdin.readline())   # 편의점의 개수

    start = list(map(int, sys.stdin.readline().split()))                                # 집의 좌표
    coordinates = [list(map(int, sys.stdin.readline().split())) for _ in range(N+1)]    # 편의점, 목적지 좌표

    visited = [0] * (N+1)               # 편의점과 목적지를 방문했는지 여부
    can_move = set()                    # 맥주 마시며 갈수 있는 장소들 집합

    q = deque([start])
    while q:
        node = q.pop()
        can_move.add(tuple(node))       # 현재 위치를 갈 수 있는 집합에 추가 

        for i in range(N+1):
            if not visited[i] and abs(coordinates[i][0] - node[0]) + abs(coordinates[i][1] - node[1]) <= 1000:      # 아직 확인하지 않은 장소이고, 맥주 20병으로 갈 수 있는 거리인 경우
                visited[i] = 1                      # 확인 체크
                q.append(coordinates[i])            # 다음 확인을 위해 추가

    if tuple(coordinates[-1]) in can_move:      # 목적지에 갈 수 있으면 happy 출력
        print('happy')
    else:
        print('sad')

📝 결과 및 학습한 내용

1) 어려웠던 내용

특별히 없습니다.

2) 새롭게 학습한 내용

특별히 없습니다.


🔗 문제 링크

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

 

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

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

www.acmicpc.net

 

 

※ 오류 및 오타, 다른 의견이 있는 경우 댓글을 남겨주시면 감사하겠습니다

'알고리즘 문제풀이 > Python' 카테고리의 다른 글

[백준] 2665 미로만들기  (0) 2022.01.23
[백준] 14621 나만 안되는 연애  (0) 2022.01.22
[백준] 5052 전화번호 목록  (0) 2022.01.20
[백준] 1707 이분 그래프  (0) 2022.01.19
[백준] 22944 죽음의 비  (0) 2022.01.18

댓글