250x250
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 |
29 | 30 | 31 |
Tags
- 즉시로딩
- 힙
- fetch
- shared lock
- eager
- 일대다
- 이진탐색
- querydsl
- 다대일
- dfs
- 연관관계
- 연결리스트
- 지연로딩
- 스프링 폼
- 다대다
- execute
- 동적sql
- FetchType
- JPQL
- 비관적락
- CHECK OPTION
- BOJ
- 유니크제약조건
- PS
- SQL프로그래밍
- 백트래킹
- exclusive lock
- 낙관적락
- 데코레이터
- 스토어드 프로시저
Archives
- Today
- Total
흰 스타렉스에서 내가 내리지
[BOJ] (BFS) 16928번 뱀과 사다리게임 본문
728x90
bfs로 푸는데, 100개의 점을 6번씩 루프 돌리면 연산량이 굉장히 많아진다.
중간에 컷 할 필요가 느껴지는데, visited를 이용하면 된다.
같은 곳을 또 방문하면, cnt만 늘어날 뿐더러, 뱀을 만나 내려오면 무한루프에 빠질 수 있기 때문이다.
오랜만에 문제 푸는거라 감이 떨어졌다,...ㅎ
from collections import deque
def main():
n, m = map(int, input().split())
board = [[i, i] for i in range(101)]
for _ in range(n+m):
x, y = map(int, input().split())
board[x] = [x, y]
visited = [False] * 101
q = deque([(1, 0)])
while q:
now, cnt = q.popleft()
if now == 100:
print(cnt)
return
for dice in range(1, 7):
next = now + dice
if next > 100: continue
next = board[next][1]
if visited[next]: continue
visited[next] = True
q.append((next, cnt+1))
main()
'Problem Solving' 카테고리의 다른 글
DFS와 BFS (0) | 2023.12.24 |
---|---|
그래프 표현 - 인접 행렬과 인접 리스트 (0) | 2023.12.24 |
[BOJ] (구현) 1339번 단어수학 (0) | 2022.04.08 |
[BOJ] (구현) 20327번 배열돌리기 6 (0) | 2022.04.03 |
[BOJ](BF,구현) 1917번 정육면체 전개도 (0) | 2022.03.18 |