Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- CI/CD
- 프로그래머스
- 운영체제
- 백준 1120
- 백준 2529
- 스프링
- 증가하는부분수열
- Spring
- 코딩테스트
- 락
- 코테
- 도커
- CS
- 백준 15686
- 백트래킹
- 백준
- 백준 파이썬
- 백준 10819
- 백준 14499
- 백준 2302
- 스레드
- 파이썬
- docker
- Spring Security
- 자바스크립트
- 후위 표기식
- 9465 스티커
- 다익스트라
- 네이버
- 프로세스
Archives
- Today
- Total
개발
[백준] 16928 뱀과 사다리 게임 본문
간단한 BFS문제인데 파이썬으로 푸는게 정말 오랜만이라 코드가 매우 지저분하다.
리스트로 구현할 것이 아니라 딕셔너리로 키는 시작지점 밸류는 도착지점으로 설정하면
sort할 필요도 없을 것 같다는 생각이 든다.
import sys
from collections import deque
input = sys.stdin.readline
n, m = map(int, input().split())
ladder = []
snake = []
pos = 1
deque = deque([(1, 0)])
for i in range(n+m):
start, end = map(int, input().split())
if i < n:
ladder.append([start, end])
else:
snake.append([start, end])
ladder.sort()
snake.sort()
def bfs():
visited = [0 for _ in range(101)]
visited[1] = 1
ans = sys.maxsize
ladder_start = [i[0] for i in ladder]
snake_start = [i[0] for i in snake]
while deque:
x, count = deque.pop()
if x == 100:
return count
for i in range(1,7):
nx = x + i
if nx > 100:
continue
if visited[nx] == 0:
if nx in ladder_start:
visited[nx] = 1
nx = ladder[ladder_start.index(nx)][1]
deque.appendleft((nx, count+1))
elif nx in snake_start:
visited[nx] = 1
nx = snake[snake_start.index(nx)][1]
deque.appendleft((nx, count+1))
else:
visited[nx] = 1
deque.appendleft((nx, count+1))
return ans
print(bfs())'알고리즘 > 문제' 카테고리의 다른 글
| [백준] 14502 연구소(파이썬) (0) | 2022.07.17 |
|---|---|
| [백준] 1918 후위 표기식(파이썬) (0) | 2022.07.16 |
| [프로그래머스] [1차] 비밀지도 (자바스크립트) (0) | 2022.07.01 |
| [프로그래머스] 크레인 인형뽑기 게임 (자바스크립트) (0) | 2022.07.01 |
| [프로그래머스] 키패드 누르기 (자바스크립트) (0) | 2022.07.01 |