ํฐ์คํ ๋ฆฌ ๋ทฐ
ํ๋ก๊ทธ๋๋จธ์ค: ๋ฐฉ๋ฌธ ๊ธธ์ด
dirmathfl 2020. 10. 25. 23:15๋ฌธ์
๋ฌธ์ ํ์ด
์บ๋ฆญํฐ๊ฐ [0, 0] ์ขํ์์ ์์ํด ๋ช ๋ น์ ๋ฐ๋ผ ์, ํ, ์ข, ์ฐ๋ก ์ด๋ํ๋ค. ์ค๋ณตํ์ฌ ์ด๋ํ ๊ฑฐ๋ฆฌ์ ๋ฒ์ ๋ฐ์ผ๋ก ์ด๋ํ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ์ฌ ์ด๋ํ ๊ฑฐ๋ฆฌ์ ํฉ์ ๊ณ์ฐํ์ฌ ๋ฐํํ๋ ๋ฌธ์ ์ด๋ค. ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด์๋ ๋์ ๋๋ฆฌ๋ฅผ ํตํด `U, D, L, R`๋ก ์ด๋ํ ๊ฒฝ์ฐ ๋ณํํ๋ ์ขํ๋ฅผ ์ ์ธํ ํ, ๋ฒ์์ ๋ฐ๋ผ ๋ฐฉ๋ฌธํ์ง ์์ ๊ฒฝ์ฐ `visited`์ ์ถ๊ฐํ๋ฉด ๋๋ค.
๋ฌธ์ ์์ ๊ตฌํ๊ณ ์ ํ๋ ๋ต์ `visteid // 2`๊ฐ ๋๋ค. ์ด์ ๊ฐ์ ์ด์ ๋ ์ด๋ํ ๋๋ ์ถ๋ฐํ ๊ณณ๊ณผ ๋์ฐฉํ ๊ณณ ์๋ฐฉํฅ์ผ๋ก ๊ธฐ๋กํ์ฌ์ผ ํ๋ค. ์ฆ ํ์ฌ ์ขํ๊ฐ `[x, y]` ๋ค์ ์ขํ๊ฐ `[next_x, next_y]`๋ผ๋ฉด `[x, y, next_x, next_y], [next_x, next_y, x, y]`๋ฅผ ๊ธฐ๋กํ์ฌ์ผ ํ๋ค.
์ฝ๋
move = {
'U': (-1, 0),
'D': (1, 0),
'L': (0, -1),
'R': (0, 1)
}
def solution(dirs):
x, y = 0, 0
visited = set()
for command in dirs:
dx, dy = move[command]
next_x, next_y = x + dx, y + dy
if 0 <= abs(next_x) <= 5 and 0 <= abs(next_y) <= 5:
if (x, y, next_x, next_y) not in visited:
visited.add((x, y, next_x, next_y))
visited.add((next_x, next_y, x, y))
x, y = next_x, next_y
return len(visited) // 2
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค: ์ค ์๋ ๋ฐฉ๋ฒ (2) | 2020.10.26 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค: ๋ฉ๋ฆฌ ๋ฐ๊ธฐ (0) | 2020.10.26 |
ํ๋ก๊ทธ๋๋จธ์ค: ์ ๊ตญ์ฌ์ฌ (0) | 2020.10.25 |
ํ๋ก๊ทธ๋๋จธ์ค: ๋๋์ง (0) | 2020.10.24 |
ํ๋ก๊ทธ๋๋จธ์ค: ์กฐ์ด์คํฑ (0) | 2020.10.23 |