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
- SWEA
- 트라이
- 2019 KAKAO BLIND RECRUITMENT
- 플로이드와샬
- 2020 카카오 인턴십
- 비트마스킹
- 구현
- Spring
- BFS
- 시뮬레이션
- 투포인터
- 파이썬
- 투 포인터
- 2021 KAKAO BLIND RECRUITMENT
- 이분탐색
- 2020 KAKAO BLIND RECRUITMENT
- 2018 KAKAO BLIND RECRUITMENT
- 브루트포스
- 조합
- 프로그래머스
- 최소 신장 트리
- 백준
- 크루스칼
- 우선순위큐
- 백트래킹
- 다익스트라
- 로봇 청소기
- 플로이드 와샬
- 스택
- GIT
Archives
- Today
- Total
개발조아
[BOJ/백준] 22944 죽음의 비 파이썬 본문
728x90
문제 링크 : https://www.acmicpc.net/problem/22944
나는 BFS로 풀었고 방문체크는 해당 칸을 방문했을 때의 체력을 기록했다. 그래서 다음번에 다시 방문했을 때 해당 칸보다 체력이 높아야 이동이 가능하게 했다.
더 낮은데 해당 칸으로 이동해봐야 기존의 방문했을 때보다 적게 가기 때문이다.
BFS 진행시 범위 안에 들어왔을 때 조건들을 체크한다.
만약 E점이라면 종료한다.
아니라면
다음 점이 우산이라면 현재 내구도를 d로 바꾼다.
다음 현재 내구도가 0이라면 체력 -1 아니라면 내구도 -1을 하는데 이때 체력이 0이라면 넘어간다.
마지막으로 방문체크하고 큐에 넣는다.
from sys import stdin
from collections import deque
input = stdin.readline
dx = [-1,1,0,0]
dy = [0,0,-1,1]
n,h,d = map(int, input().split())
board = []
sx=sy=-1
for x in range(n):
board.append(list(input().strip()))
if sx==-1:
for y in range(n):
if board[x][y] == 'S':
sx,sy = x,y
def solv():
visited = [[0]*n for _ in range(n)]
q = deque([(sx,sy,h,0,0)])
visited[sx][sy] = h
while q:
x,y,now_h,now_d,cnt = q.pop()
for dir in range(4):
nx = x + dx[dir]
ny = y + dy[dir]
if point_validator(nx,ny):
if board[nx][ny] == 'E':
print(cnt+1)
return
nxt_h = now_h
nxt_d = now_d
if board[nx][ny] == 'U':
nxt_d = d
if nxt_d == 0:
nxt_h -= 1
else:
nxt_d -= 1
if nxt_h == 0:
continue
if visited[nx][ny] < nxt_h:
visited[nx][ny] = nxt_h
q.appendleft((nx,ny,nxt_h,nxt_d,cnt+1))
print(-1)
def point_validator(x,y):
if x < 0 or y < 0 or x >= n or y >= n:
return False
return True
solv()
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ/백준] 15787 기차가 어둠을 헤치고 은하수를 파이썬 (0) | 2021.10.15 |
---|---|
[BOJ/백준] 15691 회전 초밥 파이썬 (1) | 2021.10.09 |
[BOJ/백준] 21278 호석이 두 마리 치킨 파이썬 (0) | 2021.10.07 |
[BOJ/백준] 22868 산책(small) 파이썬 (0) | 2021.10.06 |
[BOJ/백준] 18513 샘터 파이썬 (0) | 2021.10.06 |
Comments