๋ฐ์ํ
๐ฑ ๋ฌธ์
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๐ฑ ํ์ด
์ด ๋ฌธ์ ๋ ๋จ์ ๊ตฌํ ๋ฌธ์ ๋ก, ๋ฌธ์ ์์ ์๊ตฌํ๋ ์ค๋ช ์ ๊ทธ๋๋ก ์ฝ๋๋ก ์์ฑํ๋ฉด ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ์ ๋๋ค.
- ์ฐ์ ,
S
์ ์์น๋ฅผ ์ ์ฅํฉ๋๋ค. - ์ด๋ํ๋ ๋ช
๋ น๋ค(
routes
)์ ํ๋์ฉ ๋๋ฉด์ ํด๋น ๋ช ๋ น์ ์ํํ ์ ์๋์ง ๊ฒ์ฌํฉ๋๋ค. - ํด๋น ๋ช
๋ น์ ์ํํ ์ ์๋์ง ๊ฒ์ฌํ ๋์๋ ํ ์นธ์ฉ ์ด๋ํ๋ฉฐ ๋ฒ์๋ฅผ ๋ฒ์ด๋์ง ์๋์ง, ์ฅ์ ๋ฌผ์ด ์์ง ์์์ง ๊ฒ์ฌํด์ผ ํ๊ธฐ๋๋ฌธ์, ํ์นธ์ฉ ์ด๋ํ๋ ์ขํ๊ฐ์ ์ ์ฅํ ์ ์๋ ๋ณ์(
nx
,ny
)๋ฅผ ์ฌ์ฉํ์์ต๋๋ค. - ์ค๊ฐ์ break๋์ง ์๊ณ ํด๋น ๋ช
๋ น์ ๋๊น์ง ์ํํ ์ ์์์ด ํ์ธ๋์์ผ๋ฉด
S
์ ์์น(cx
,cy
)๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค. - ๋ง์ง๋ง์ผ๋ก ๋ชจ๋ ๊ฒฝ๋ก๋ฅผ ์ํํ๊ณ ์
๋ฐ์ดํธ๋
S
์ ์์น(cx
,cy
)๋ฅผ ๋ฆฌํดํฉ๋๋ค.
๐ฑ ์ฝ๋
# !usr/bin/env python
# -*- coding: utf-8 -*-
# programmers ๊ณต์ ์ฐ์ฑ
def solution(park, routes):
answer = []
h = len(park)
w = len(park[0])
# E, W, S, N
dict = {"E": 0, "W": 1, "S": 2, "N": 3}
x = [0, 0, 1, -1]
y = [1, -1, 0, 0]
# S์ ์์น ์ ์ฅ
for i, row in enumerate(park):
if "S" in row:
cx, cy = i, row.index("S")
# ์ด๋ํ๊ธฐ
for route in routes:
direction, count = route.split(" ")
dx = x[dict[direction]]
dy = y[dict[direction]]
for cnt in range(1, int(count) + 1):
nx, ny = cx + dx * cnt, cy + dy * cnt
if (nx < 0 or ny < 0 or nx >= h or ny >= w): # ๋งต ๋ฒ์๋ฅผ ๋ฒ์ด๋๋์ง ๊ฒ์ฌ
break
elif park[nx][ny] == "X": # ์ฅ์ ๋ฌผ์ด ์๋์ง ๊ฒ์ฌ
break
if cnt == int(count):
cx += dx * int(count)
cy += dy * int(count)
return [cx, cy]
๋ฐ์ํ
๋๊ธ