[Programmers] ๋ฐฉ๋ฌธ ๊ธธ์ด 2
Updated:
๋ฐฉ๋ฌธ ๊ธธ์ด
๋ฐฉ๋ฌธย ๊ธธ์ด ๋ฅผ ํด๋ฆญํ๋ฉด ๋ฐ๋ก ์ด๋ํ๋ค.
๋ฌธ์ ๋ฅผ ํ๋ฉด์ ์์ ์ ํ์๋ ๋ฌธ์ ์๋ ๊ฒ ๊ฐ์ ๊ธฐ๋ถ์ด ๋ค์ด ๊ฒ์์ ํด๋ณด์๋๋
[Programmers] ๋ฐฉ๋ฌธ ๊ธธ์ด ์๋ 6์ 19์ผ์ ํ์๋ ๋ฌธ์ ์๋ค.
์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ์ฒ์ ํ๊ธฐ ์์ํ ๋ ์๋๋ฐ ๊ทธ๋ ์ฝ๋์ ๋น๊ต๋ฅผ ํ๋ ๋ง์ด ๋์์ง ๊ฒ ๊ฐ๋ค..
ํด๊ฒฐ ๋ฐฉ๋ฒ์ 3์ฐจ์ ๋ฐฐ์ด์ ์ฌ์ฉํ๋ค.
๊ฐ ์์น๋ง๋ค ์, ํ, ์ข, ์ฐ๋ก ๊ฐ๋ ๊ธธ์ ์ฌ์ฉ ์ฌ๋ถ๋ฅผ ํ์ํ๋ค.
๋ง์ฝ [5, 5] ์์ [4, 5] ๋ก ์ฌ๋ผ๊ฐ๋ค๋ฉด [5, 5] ์ ์ฌ๋ผ๊ฐ๋ ๊ธธ๊ณผ [4, 5] ์ ๋ด๋ ค๊ฐ๋ ๊ธธ์ ์ฌ์ฉ ํ๋ค๊ณ ์ฒดํฌํ๋ ๊ฒ์ด๋ค.
์ฃผ์ด์ง ๋ช ๋ น๋๋ก ์ขํ๋ฅผ ํ์ํ๋ฉด์ ๊ธธ์ ์ฒ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ง ์ฒ์ ๊ฑธ์ด๋ณธ ๊ธธ์ ๊ธธ์ด์ ๋ํ๋ฉด ๋๋ค.
def solution(dirs):
answer = 0
road = [[[True, True, True, True] for _ in range(11)] for _ in range(11)]
move = {
'U': [-1, 0],
'R': [0, 1],
'D': [1, 0],
'L': [0, -1],
}
head = {
'U': [0, 2],
'R': [1, 3],
'D': [2, 0],
'L': [3, 1],
}
cur_i, cur_j = [5, 5]
for val in dirs:
visit_i, visit_j = cur_i + move[val][0], cur_j + move[val][1]
if 0 <= visit_i <= 10 and 0 <= visit_j <= 10:
if road[cur_i][cur_j][head[val][0]] and road[visit_i][visit_j][head[val][1]]:
answer += 1
road[cur_i][cur_j][head[val][0]] = False
road[visit_i][visit_j][head[val][1]] = False
cur_i = visit_i
cur_j = visit_j
return answer
Leave a comment