๐กsolutions )
โ ์ธ ๊ฐ์ง ๊ฒฝ์ฐ๋ก ๋๋๋ค
- #left ์ผ์๊ฐ๋ฝ์ ์์ง์ด๋ ๊ฒฝ์ฐ(1,4,7)
- #right ์ค๋ฅธ์๊ฐ๋ฝ์ ์์ง์ด๋ ๊ฒฝ์ฐ(3,6,9)
- #middle ๊ฐ์ด๋ฐ ๋ฒํธ์ธ ๊ฒฝ์ฐ์๋
-> ๊ฐ ๋ ์๊ฐ๋ฝ์ ์์น์ ์์ง์ฌ์ผ ํ๋ ์ซ์ ๊ฐ์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํด์ ๊ฐ ๋น๊ตํ๊ธฐ(distance)
โ ๊ฑฐ๋ฆฌ๋ ์ขํ๋ฅผ ํ์ฉํด ๋งจํํ ๊ฑฐ๋ฆฌ๋ก ๊ตฌํ๋ค -> distance ํจ์ ๊ตฌํ
โ d_r(์ค๋ฅธ ์๊ฐ๋ฝ๊ณผ์ ๊ฑฐ๋ฆฌ)๊ฐ d_l(์ผ ์๊ฐ๋ฝ๊ณผ์ ๊ฑฐ๋ฆฌ)๋ณด๋ค ํฌ๋ฉด L ๋ถ์ด๊ธฐ (์ผ ์๊ฐ๋ฝ ์ด๋), ๊ทธ ๋ฐ๋๋ ์ฑ๋ฆฝ
โ ๋ง์ฝ ๊ฑฐ๋ฆฌ ์ฐจ์ด๊ฐ ๊ฐ์ผ๋ฉด ์ผ์์ก์ด์ธ์ง ์ค๋ฅธ์์ก์ด์ธ์ง ํ๋ณ ํ answer์ ์ด๋ํ ์๊ฐ๋ฝ ๋ํ๊ธฐ
โ ํ ์คํธ ์ผ์ด์ค 8๋ฒ 15๋ฒ์์ ์๊พธ ์ค๋ฅ๊ฐ ๋์ ๋๋ด๊ธฐ์ ํจ๊ป ์ดํด๋ณด๋ ์ฒ์ ์ด๊ธฐ๊ฐ tmp_r๊ณผ tmp_l๋ฅผ 0์ผ๋ก ๋์๋ ๊ฒ ๋ฌธ์ ์๋ค. ์๊ฐ๋ฝ์ด ์ฒ์ ์์น์์ ์์ง์ด์ง ์์ ์ํ์์(์ฆ, ์๊ฐ๋ฝ์ด #์ด๋ *์ ์์นํด ์์ ๋) ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๊ฒ ๋๋ฉด ์ด๊ธฐ๊ฐ์ด 0์ผ๋ก ์ค์ ๋ผ ์์ด 0๊ณผ ์์ง์ฌ์ผ ํ๋ ์ซ์ ๊ฐ์ ๊ฑฐ๋ฆฌ๋ก ๊ตฌํ๊ฒ ๋์ด ์๋ชป๋ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๊ฒ ๋๋ ๊ฒ์ด ๋ฌธ์ ์๋ค. -> ํด๊ฒฐ์ ๊ฐ๋จํ ์ด๊ธฐ๊ฐ์ #, *๋ก ๋๋ฉด ๋๋ค.
๐ซcode )
def solution(numbers, hand):
answer = ''
tmp_r = '#'
tmp_l = '*'
for n in numbers:
if n in [3, 6, 9]: #right
answer += 'R'
tmp_r = n
elif n in [1, 4, 7]: #left
answer += 'L'
tmp_l = n
elif n in [2, 5, 8, 0]: #middle
d_r = distance(tmp_r, n)
d_l = distance(tmp_l, n)
if d_r > d_l:
answer += 'L'
tmp_l = n
elif d_r < d_l:
answer += 'R'
tmp_r = n
elif d_r == d_l:
if hand == 'right':
answer += 'R'
tmp_r = n
else:
answer += 'L'
tmp_l = n
return answer
def distance(hand, number):
location = {'1': (0, 0), '2': (0, 1), '3': (0, 2),
'4': (1, 0), '5': (1, 1), '6': (1, 2),
'7': (2, 0), '8': (2, 1), '9': (2, 2),
'*': (3, 0), '0': (3, 1), '#': (3, 2)}
hand = str(hand)
number = str(number)
x_h, y_h = location[hand]
x_n, y_n = location[number]
return abs(x_h - x_n) + abs(y_h - y_n)
๐ description )
๋ฌธ์ ์ถ์ฒ : https://programmers.co.kr/learn/courses/30/lessons/67256?language=python3
๋ฌธ์ ์ค๋ช
์ค๋งํธํฐ ์ ํ ํคํจ๋์ ๊ฐ ์นธ์ ๋ค์๊ณผ ๊ฐ์ด ์ซ์๋ค์ด ์ ํ ์์ต๋๋ค.
์ด ์ ํ ํคํจ๋์์ ์ผ์๊ณผ ์ค๋ฅธ์์ ์์ง์๊ฐ๋ฝ๋ง์ ์ด์ฉํด์ ์ซ์๋ง์ ์ ๋ ฅํ๋ ค๊ณ ํฉ๋๋ค.
๋งจ ์ฒ์ ์ผ์ ์์ง์๊ฐ๋ฝ์ * ํคํจ๋์ ์ค๋ฅธ์ ์์ง์๊ฐ๋ฝ์ # ํคํจ๋ ์์น์์ ์์ํ๋ฉฐ, ์์ง์๊ฐ๋ฝ์ ์ฌ์ฉํ๋ ๊ท์น์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์์ง์๊ฐ๋ฝ์ ์ํ์ข์ฐ 4๊ฐ์ง ๋ฐฉํฅ์ผ๋ก๋ง ์ด๋ํ ์ ์์ผ๋ฉฐ ํคํจ๋ ์ด๋ ํ ์นธ์ ๊ฑฐ๋ฆฌ๋ก 1์ ํด๋นํฉ๋๋ค.
- ์ผ์ชฝ ์ด์ 3๊ฐ์ ์ซ์ 1, 4, 7์ ์ ๋ ฅํ ๋๋ ์ผ์ ์์ง์๊ฐ๋ฝ์ ์ฌ์ฉํฉ๋๋ค.
- ์ค๋ฅธ์ชฝ ์ด์ 3๊ฐ์ ์ซ์ 3, 6, 9๋ฅผ ์ ๋ ฅํ ๋๋ ์ค๋ฅธ์ ์์ง์๊ฐ๋ฝ์ ์ฌ์ฉํฉ๋๋ค.
- ๊ฐ์ด๋ฐ ์ด์ 4๊ฐ์ ์ซ์ 2, 5, 8, 0์ ์ ๋ ฅํ ๋๋ ๋ ์์ง์๊ฐ๋ฝ์ ํ์ฌ ํคํจ๋์ ์์น์์ ๋ ๊ฐ๊น์ด ์์ง์๊ฐ๋ฝ์ ์ฌ์ฉํฉ๋๋ค.
4-1. ๋ง์ฝ ๋ ์์ง์๊ฐ๋ฝ์ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ๋ค๋ฉด, ์ค๋ฅธ์์ก์ด๋ ์ค๋ฅธ์ ์์ง์๊ฐ๋ฝ, ์ผ์์ก์ด๋ ์ผ์ ์์ง์๊ฐ๋ฝ์ ์ฌ์ฉํฉ๋๋ค.์์๋๋ก ๋๋ฅผ ๋ฒํธ๊ฐ ๋ด๊ธด ๋ฐฐ์ด numbers, ์ผ์์ก์ด์ธ์ง ์ค๋ฅธ์์ก์ด์ธ ์ง๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด hand๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๊ฐ ๋ฒํธ๋ฅผ ๋๋ฅธ ์์ง์๊ฐ๋ฝ์ด ์ผ์์ธ ์ง ์ค๋ฅธ์์ธ ์ง๋ฅผ ๋ํ๋ด๋ ์ฐ์๋ ๋ฌธ์์ด ํํ๋ก return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
[์ ํ์ฌํญ]
- numbers ๋ฐฐ์ด์ ํฌ๊ธฐ๋ 1 ์ด์ 1,000 ์ดํ์ ๋๋ค.
- numbers ๋ฐฐ์ด ์์์ ๊ฐ์ 0 ์ด์ 9 ์ดํ์ธ ์ ์์ ๋๋ค.
- hand๋ "left" ๋๋ "right" ์ ๋๋ค.
- "left"๋ ์ผ์์ก์ด, "right"๋ ์ค๋ฅธ์์ก์ด๋ฅผ ์๋ฏธํฉ๋๋ค.
- ์ผ์ ์์ง์๊ฐ๋ฝ์ ์ฌ์ฉํ ๊ฒฝ์ฐ๋ L, ์ค๋ฅธ์ ์์ง์๊ฐ๋ฝ์ ์ฌ์ฉํ ๊ฒฝ์ฐ๋ R์ ์์๋๋ก ์ด์ด๋ถ์ฌ ๋ฌธ์์ด ํํ๋ก return ํด์ฃผ์ธ์.
์ ์ถ๋ ฅ ์
numbers hand result
[1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" ์ ์ถ๋ ฅ ์์ ๋ํ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
์์๋๋ก ๋๋ฌ์ผ ํ ๋ฒํธ๊ฐ [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5]์ด๊ณ , ์ค๋ฅธ์์ก์ด์ ๋๋ค.
์ผ์ ์์น์ค๋ฅธ์ ์์น๋๋ฌ์ผ ํ ์ซ์์ฌ์ฉํ ์์ค๋ช
* # 1 L 1์ ์ผ์์ผ๋ก ๋๋ฆ ๋๋ค. 1 # 3 R 3์ ์ค๋ฅธ์์ผ๋ก ๋๋ฆ ๋๋ค. 1 3 4 L 4๋ ์ผ์์ผ๋ก ๋๋ฆ ๋๋ค. 4 3 5 L ์ผ์ ๊ฑฐ๋ฆฌ๋ 1, ์ค๋ฅธ์ ๊ฑฐ๋ฆฌ๋ 2์ด๋ฏ๋ก ์ผ์์ผ๋ก 5๋ฅผ ๋๋ฆ ๋๋ค. 5 3 8 L ์ผ์ ๊ฑฐ๋ฆฌ๋ 1, ์ค๋ฅธ์ ๊ฑฐ๋ฆฌ๋ 3์ด๋ฏ๋ก ์ผ์์ผ๋ก 8์ ๋๋ฆ ๋๋ค. 8 3 2 R ์ผ์ ๊ฑฐ๋ฆฌ๋ 2, ์ค๋ฅธ์ ๊ฑฐ๋ฆฌ๋ 1์ด๋ฏ๋ก ์ค๋ฅธ์์ผ๋ก 2๋ฅผ ๋๋ฆ ๋๋ค. 8 2 1 L 1์ ์ผ์์ผ๋ก ๋๋ฆ ๋๋ค. 1 2 4 L 4๋ ์ผ์์ผ๋ก ๋๋ฆ ๋๋ค. 4 2 5 R ์ผ์ ๊ฑฐ๋ฆฌ์ ์ค๋ฅธ์ ๊ฑฐ๋ฆฌ๊ฐ 1๋ก ๊ฐ์ผ๋ฏ๋ก, ์ค๋ฅธ์์ผ๋ก 5๋ฅผ ๋๋ฆ ๋๋ค. 4 5 9 R 9๋ ์ค๋ฅธ์์ผ๋ก ๋๋ฆ ๋๋ค. 4 9 5 L ์ผ์ ๊ฑฐ๋ฆฌ๋ 1, ์ค๋ฅธ์ ๊ฑฐ๋ฆฌ๋ 2์ด๋ฏ๋ก ์ผ์์ผ๋ก 5๋ฅผ ๋๋ฆ ๋๋ค. 5 9 - - ๋ฐ๋ผ์ "LRLLLRLLRRL"๋ฅผ return ํฉ๋๋ค.
์ ์ถ๋ ฅ ์ #2
์ผ์์ก์ด๊ฐ [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2]๋ฅผ ์์๋๋ก ๋๋ฅด๋ฉด ์ฌ์ฉํ ์์ "LRLLRRLLLRR"์ด ๋ฉ๋๋ค.
์ ์ถ๋ ฅ ์ #3
์ค๋ฅธ์์ก์ด๊ฐ [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]๋ฅผ ์์๋๋ก ๋๋ฅด๋ฉด ์ฌ์ฉํ ์์ "LLRLLRLLRL"์ด ๋ฉ๋๋ค.