카테고리 없음

백준 BOJ 6146 : 신아를 만나러 - 파이썬

2023. 10. 27. 15:44

문제

키파는 신아를 만나러 아침 일찍(무려 6시에!) 일어났다. 간밤에 거센 비가 내려서 새로 산 장화를 신고 (0, 0)에 있는 집을 나선 키파는 무려 N(1 ≤ N ≤ 104)개의 웅덩이가 있는 것을 보고 놀랐다. 각각의 웅덩이는 (Ai, Bi)(|Ai| ≤ 500, |Bi| ≤ 500)에 위치해 있으며 키파는 눈이 좋아 이 웅덩이를 모두 볼 수 있다.

신아가 일찍 일어날 수도 있기 때문에 어서 (X, Y)에 있는 신아의 집에 최대한 빨리 도달해서 그녀가 잘 때 서프라이즈를 해 주고 싶지만, 장화가 새 것이기 때문에 웅덩이를 밟지 않는 것도 중요하다. 만일 키파가 상하좌우로만 이동할 수 있다면 웅덩이를 밟지 않으면서 신아에게 갈 수 있는 최소 거리는 얼마인가? 신아에게 가기 위해 웅덩이를 밟아야만 하는 경우는 없다고 가정한다.

입력

첫째 줄에 X, Y와 N이 공백을 사이에 두고 주어진다.

i+1 (1 ≤ i ≤ N) 번째 줄에 Ai와 Bi가 공백을 사이에 두고 주어진다.

출력

첫째 줄에 키파가 웅덩이를 밟지 않고 신아에게 갈 수 있는 최소 거리를 출력하라.

예제 입력 1

1 2 7
0 2
-1 3
3 1
1 1
4 2
-1 1
2 2

예제 출력 1 

11

 

제출 답안

from collections import deque

# 이동할 네가지 방향 정의 (상하좌우)
dx = [1, 0, -1, 0]
dy = [0, 1, 0, -1]

X, Y, N = map(int, input().split())

graph = [[0]*1000 for _ in range(1000)]
for _ in range(N):
    A, B = map(int, input().split())
    graph[A][B] = -1

visited = [[False]*1000 for _ in range(1000)]

def bfs(x,y):
    dq = deque([(x, y, 0)])
    visited[x][y] = True

    while dq:
        x, y, cnt = dq.popleft()

        if x == X and y == Y:  # 신아의 위치에 도착하면
            return cnt  # 현재 칸 까지 이동한 횟수 리턴

        for i in range(4):   # 4가지 방향으로 위치확인
            nx = x + dx[i]
            ny = y + dy[i]

            # 위치가 벗어나면 안되기 때문에 조건 추가 (물웅덩이는 -500~500 사이에 있을 수 있음)
            if -500 <= nx < 500 and -500 <= ny < 500:
                # 방문하지 않았고 -1(이동불가)이 아니라면
                if not visited[nx][ny] and graph[nx][ny] != -1:
                    visited[nx][ny] = True
                    dq.append([nx, ny, cnt+1])

print(bfs(0,0)) # 키파의 시작 위치는 0,0
저작자표시
아아네잔
아아네잔
아아네잔
로깅
아아네잔
전체
오늘
어제
  • 분류 전체보기 (22)
    • Spring (2)
    • Docker (2)
    • Javascript (2)
    • Vue.js (4)
    • SQL (4)
    • MSSQL (1)
    • Others (2)
    • TroubleShooting (2)
    • tools (2)
    • #기술면접 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Notion
  • 자바특징
  • 노션빨간줄
  • vuerouter3
  • 구글맞춤법검사기
  • 맞춤법검사
  • docker
  • SQLD1장
  • 자바기술면접
  • NTFS변환
  • VARCHAR210Char #VARCHAR210
  • 이드라이브는손상되었기때문에변환할수없습니다
  • vuejs
  • vuerouter
  • 파일시스템변환
  • M1nginx
  • vue2
  • modal컴포넌트초기화
  • 자바장단점
  • 노션
  • nginx
  • SQLD핵심정리
  • vuerouter4
  • vue입력값초기화
  • 노션맞춤법검사해제
  • 뷰라우터
  • 웹서버만들기
  • M1dockerdesktop

최근 댓글

최근 글

hELLO · Designed By 정상우.
아아네잔
백준 BOJ 6146 : 신아를 만나러 - 파이썬
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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