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

2023. 3. 11. 12:27·Algorithm (PS)
728x90

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

 

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

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

www.acmicpc.net

 

나도 맥주마시면서 펜타포트 페스티벌 가고 싶다 ! 

88%에서 걸린 코드 

from collections import deque

t = int(input())

# 맨하튼 거리 계산
def distance(x1, y1, x2, y2):
    return abs(x1 - x2) + abs(y1 - y2)

def route(sx, sy, ex, ey):
    queue = deque([])
    x, y = sx, sy
    queue.append((x, y, 20))
    visited_store = [False] * n
    while queue:
        now_x, now_y, beer_count = queue.popleft()
       # print(now_x, now_y)
        # 현재 위치에서 endpoint 까지 바로 갈 수 있는지 확인하기
        d1 = distance(now_x, now_y, ex, ey)
        if d1 // 50 <= beer_count:
            return True

            # 갈 수 있는 편의점 확인하기 && 방문 여부 확인하기
        for i in range(n):
            a, b = store[i]
            if distance(now_x, now_y, a, b) // 50 <= beer_count and not visited_store[i]:
                visited_store[i] = True
                queue.append((a, b, 20))

    # bfs 실행 후 도착 못한 경우
    return False



for _ in range(t):

    n = int(input())

    sx, sy = map(int, input().split()) # 상근이네 집 start
    store = []
    for i in range(n):
        x, y = map(int, input().split()) # 편의점 좌표
        store.append((x, y))
    ex, ey = map(int, input().split()) # festival

    result = route(sx, sy, ex, ey)

    if result:
        print("happy")
    else:
        print("sad")

 

 

정답 코드 

1001 / 50 = 20...1 인 셈인데, 그러면 맥주가 21캔 필요한 것으로 봐야한다 ;;

1000m 를 기준으로 거리를 비교해야 한다 

import sys
from collections import deque

input = sys.stdin.readline
# 맨하튼 거리 계산
def distance(x1, y1, x2, y2):
    return abs(x1 - x2) + abs(y1 - y2)

def route(sx, sy, ex, ey, store):
    queue = deque([])
    x, y = sx, sy
    queue.append((x, y, 20))
    visited_store = [False] * n
    while queue:
        now_x, now_y, beer_count = queue.popleft()
        # 현재 위치에서 endpoint 까지 바로 갈 수 있는지 확인하기
        d1 = distance(now_x, now_y, ex, ey)
        if d1 <= 1000:
            print("happy")
            return

            # 갈 수 있는 편의점 확인하기 && 방문 여부 확인하기
        for i in range(n):
            a, b = store[i]
            if distance(now_x, now_y, a, b) <= 1000 and not visited_store[i]:
                visited_store[i] = True
                queue.append((a, b, 20))
    # bfs 실행 후 도착 못한 경우
    print("sad")
    return

t = int(input())

for _ in range(t):
    n = int(input())
    sx, sy = map(int, input().split()) # 상근이네 집 start
    store = []
    for i in range(n):
        x, y = map(int, input().split()) # 편의점 좌표
        store.append((x, y))
    ex, ey = map(int, input().split()) # festival

    route(sx, sy, ex, ey, store)
728x90

'Algorithm (PS)' 카테고리의 다른 글

[백준] 16197번: 두 동전 python (백트래킹/dfs)  (0) 2023.03.20
[백준] 9997번: 폰트 - 비트마스킹 Python  (0) 2023.03.19
[백준] 2170번: 선 긋기 Python - 스위핑 알고리즘, 정렬  (0) 2023.03.06
[프로그래머스] 행렬 테두리 회전하기 Python/파이썬  (0) 2023.03.05
[백준] 18428번: 감시 피하기  (0) 2023.03.05
'Algorithm (PS)' 카테고리의 다른 글
  • [백준] 16197번: 두 동전 python (백트래킹/dfs)
  • [백준] 9997번: 폰트 - 비트마스킹 Python
  • [백준] 2170번: 선 긋기 Python - 스위핑 알고리즘, 정렬
  • [프로그래머스] 행렬 테두리 회전하기 Python/파이썬
minjiwoo
minjiwoo
Data Engineering과 Cloud Native 기술에 대해 Dive Deep 하는 플랫폼 엔지니어가 되는 것을 목표로 하고 있습니다. 경험과 공부한 내용을 기록하며 지속가능한 엔지니어가 되는 것이 꿈입니다.
minjiwoo
minji's engineering note
minjiwoo
전체
오늘
어제
  • 분류 전체보기 (613)
    • Data Engineering (42)
      • Apache Spark (11)
      • Databricks & Delta Lake (9)
      • Airflow (3)
      • SQL (6)
      • Trouble Shooting (2)
      • Hadoop (2)
      • MLOps (1)
    • Cloud Engineering (104)
      • AWS (23)
      • Linux 🐧 (29)
      • Docker 🐳 (21)
      • Kubernetes ⚙️ (20)
      • Ansible (10)
    • Computer Science (87)
      • 네트워크 (9)
      • 운영체제 (25)
      • 정보처리기사 (48)
      • CS 기술 면접 스터디 (3)
    • Programming Languages (27)
      • Python (17)
      • C와 C++ (10)
    • Backend (5)
      • Django (2)
    • 프로젝트 (2)
      • 테크포임팩트 (2)
    • iOS (11)
      • 레이블러리 (2)
    • Algorithm (PS) (275)
      • LeetCode (6)
    • 개발일기 (30)
      • 내돈내산 후기🎮 (3)
      • 개발자 취준생 (5)
      • Today I Learned (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Hi there

인기 글

태그

  • 프로그래머스
  • BFS
  • 데이터엔지니어
  • dp
  • Databricks
  • 스파크
  • 빅데이터
  • Swift
  • 운영체제
  • python
  • dfs
  • 데이터엔지니어링
  • ansible
  • 코딩테스트
  • Leetcode
  • 알고리즘
  • SPARK
  • Kubernetes
  • linux
  • docker
  • 리눅스
  • AWS
  • 클라우드
  • 쿠버네티스
  • 데이터브릭스
  • 백준
  • 카카오코딩테스트
  • 백트래킹
  • 파이썬
  • EC2

최근 댓글

최근 글

hELLO· Designed By정상우.v4.5.2
minjiwoo
[백준] 9205번: 맥주 마시면서 걸어가기 Python
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.