[백준13549] / 숨바꼭질3 - BFS

2024. 9. 6. 22:46·Programming/Algorithm

 

백준13549

 

푼 날짜 : 2024.09.06

푼 문제 : [13549] / 숨바꼭질3

사용한 언어 : python

 

 

푼 방법 :

BFS로 접근했다.

여기서 이전 문제들과 달랐던 점은 다른 이동은 1초 후 이동, 순간이동을 하는 것은 0초 라는 것!

 

따라서 계산 순서를 [순간이동(*2칸), -1칸, +1칸] 으로 두고 코드를 작성하였는데
지금 생각해보니 순간이동 가능한 범위(max는 동생의 위치 *2 정도로 잡으면 될 것 같다.)를 먼저 다 계산하고 추후 계산(+1, -1)을 해도 될 것 같다는 생각이 들었다.

 

 

 

코드 :

import sys
from collections import deque

N, K = map(int, sys.stdin.readline().split())
dx = ['*', '-', '+']

def BFS(visited, v):
    queue = deque([v])
    visited[v] = 0

    while queue:
        now = queue.popleft()
        if now == K: break

        for i in dx:
            check = False
            nx = now
            if i == '*': 
                check = True 
                nx = now * 2
            elif i == '-': nx = now - 1
            elif i == '+': nx = now + 1   
            
            if 0<=nx<=100000 and visited[nx] == -1:
                queue.append(nx)
                if check: visited[nx] = visited[now]
                else: visited[nx] = visited[now] + 1


visited = [-1 for _ in range(100001)]

BFS(visited, N)
print(visited[K])

 

 

 

오랜만에 그래프 문제를 풀다보니 조건과 범위를 깊게 생각하지 못하고

if 0<=nx<=100000 and visited[nx] == -1:

 

해당 코드를 

 

if visited[nx] == -1 and 0<=nx<=100000:

 

로 작성하며 런타임에러(IndexError)가 발생했었다.

 

 

로직은 두고 배열에 접근하기 전 범위를 먼저 확인하도록 수정하여 제출했다.

생각하면서 로직을 짜자!!!!!

 

 

 

'Programming > Algorithm' 카테고리의 다른 글

[백준1149] / RGB거리 - DP  (0) 2024.09.13
[백준1303] / 전쟁 - 전투 - DFS  (0) 2024.09.11
[백준2470] / 두 용액 - 투포인터, 정렬  (0) 2024.09.05
[백준1806] / 부분합 - 투포인터 (!엉성함주의!)  (2) 2024.09.04
[백준17478] / 재귀함수가 뭔가요? - 재귀  (3) 2024.09.03
'Programming/Algorithm' 카테고리의 다른 글
  • [백준1149] / RGB거리 - DP
  • [백준1303] / 전쟁 - 전투 - DFS
  • [백준2470] / 두 용액 - 투포인터, 정렬
  • [백준1806] / 부분합 - 투포인터 (!엉성함주의!)
__narrrrrmm
__narrrrrmm
__narrrrrmm
낢
__narrrrrmm
글쓰기 관리
전체
오늘
어제
  • 분류 전체보기 (71)
    • Programming (68)
      • Algorithm (61)
      • React JS (2)
      • SQL (5)
    • 낢의 하루 (1)
    • 대외활동 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

다익스트라
heic
Dijkstra
컬럼별칭
그래프
React.js
프로그래머스
백트래킹
백트레킹
MST
파싱
StarRating
파이썬
누적합
알고리즘
그래프탐색
PCCP
최소스패닝트리
삼성 금융아카데미
백준
투포인터
BFS
DP
SQL
Javascript
웹동아리
다이나믹프로그래밍
DFS
mysql
Python
hELLO· Designed By정상우.v4.5.3
__narrrrrmm
[백준13549] / 숨바꼭질3 - BFS
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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