ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
๋ฌธ์ ํ์ด
์ง๋๊ฐ ์ข์ธก, ์ฐ์ธก 2๊ฐ์ ์ค๋ก ๋๋์ด ์๊ณ , 3๊ฐ์ง์ ๊ฒฝ์ฐ๋ก ํ์ฌ ์นธ์์ ์ด๋ํ ์ ์๋ค. ์ฒซ ๋ฒ์งธ๋ ํ์ฌ ์นธ์์ ํ ์นธ ์์ผ๋ก ๊ฐ๋ ๊ฒ์ด๊ณ ๋ ๋ฒ์งธ๋ ํ ์นธ ๋ค๋ก ๊ฐ๋ ๊ฒ์ด๋ค. ๋ง์ง๋ง์ผ๋ก ๋ค๋ฅธ ์ค์์ K์นธ ์์ผ๋ก ๊ฐ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด์๋ ์์ ๋ค๋ฃฌ ํ ๋งํ ๋ฌธ์ ์ ๊ฐ์ด, ํ ๋จ๊ณ์์ ์ฒ๋ฆฌ ๊ฐ๋ฅํ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ฒ๋ฆฌํด์ฃผ์ด์ผ ํ๋ค.
ํ ๋งํ ๋ฌธ์ ์ ๋ฌ๋ฆฌ ๋ค์๋ฒ ์นธ์ผ๋ก ๊ฐ ์ ์๋์ง์, 1์ด๊ฐ ์ง๋๋ฉด ์ด์ ์ ์์์๋ถํฐ ํ ์นธ์ฉ ์ฌ๋ผ์ง๋ค. ๋ฐ๋ผ์ ๋ค์์ ๋ฐฉ๋ฌธ ๊ฐ๋ฅํ ์นธ์ ๋ฒ์๋ฅผ `0 <= y < n`์ด ์๋, ํ์ฌ `์ธ๋ฑ์ค < y < n`๊ณผ ๊ฐ์ด ์งํํด์ฃผ์ด์ผ ํ๋ค.
์ฝ๋
from sys import stdin
from collections import deque
def visitable(x, y, idx):
return idx < y < n and game_map[x][y] and not visited[x][y]
def bfs(start):
q = deque([start])
cur_idx = 0
while q:
for _ in range(len(q)):
x, y = q.popleft()
for next_x, next_y in ((x, y + 1), (x, y - 1), (~x, y + k)):
if next_y >= n:
return 1
if visitable(next_x, next_y, cur_idx):
q.append((next_x, next_y))
visited[next_x][next_y] = True
cur_idx += 1
return 0
if __name__ == "__main__":
LEFT, RIGHT = 0, 1
n, k = map(int, (stdin.readline().split()))
game_map = [list(map(int, stdin.readline().strip())) for _ in range(2)]
visited = [[False] * n for _ in range(2)]
print(bfs([0, 0]))
ํ์ฌ ์นธ์์ ๋ฐฉ๋ฌธํ ์ ์๋ 3๊ฐ์ง ๊ฒฝ์ฐ์ ์๋ฅผ `(x, y + 1)`, `(x, y - 1)`, `(~x, y + k)`๋ก ํํํ์๋ค. ๋ํ ์์ ์นธ์ด ์ฌ๋ผ์ง๋ ๊ฒ์ ๋ฐ์ํ๊ธฐ ์ํด y์ ๋ฒ์์ ํ์ฌ ์ธ๋ฑ์ค๋ฅผ ๋ฐ์ํ์๋ค.
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 14503 ๋ก๋ด ์ฒญ์๊ธฐ (0) | 2020.08.24 |
---|---|
๋ฐฑ์ค: 16954 ์์ง์ด๋ ๋ฏธ๋ก ํ์ถ (0) | 2020.08.24 |
๋ฐฑ์ค: 2110 ๊ณต์ ๊ธฐ ์ค์น (0) | 2020.08.23 |
๋ฐฑ์ค: 2805 ๋๋ฌด ์๋ฅด๊ธฐ (0) | 2020.08.22 |
๋ฐฑ์ค: 1654 ๋์ ์๋ฅด๊ธฐ (0) | 2020.08.22 |