์ฝ๋ฉ ํ ์คํธ ์ฐ์ต - 2020 ์นด์นด์ค ์ธํด์ญ
<[์นด์นด์ค ์ธํด] ํคํจ๋ ๋๋ฅด๊ธฐ>
๋ฌธ์ ์ค๋ช
์ค๋งํธํฐ ์ ํ ํคํจ๋์ ๊ฐ ์นธ์ ๋ค์๊ณผ ๊ฐ์ด ์ซ์๋ค์ด ์ ํ ์์ต๋๋ค.
์ด ์ ํ ํคํจ๋์์ ์ผ์๊ณผ ์ค๋ฅธ์์ ์์ง์๊ฐ๋ฝ๋ง์ ์ด์ฉํด์ ์ซ์๋ง์ ์ ๋ ฅํ๋ ค๊ณ ํฉ๋๋ค.
๋งจ ์ฒ์ ์ผ์ ์์ง์๊ฐ๋ฝ์ * ํคํจ๋์ ์ค๋ฅธ์ ์์ง์๊ฐ๋ฝ์ # ํคํจ๋ ์์น์์ ์์ํ๋ฉฐ, ์์ง์๊ฐ๋ฝ์ ์ฌ์ฉํ๋ ๊ท์น์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์์ง์๊ฐ๋ฝ์ ์ํ์ข์ฐ 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 ํด์ฃผ์ธ์.
๋ฌธ์ ํ์ด
- my solution
def solution(numbers, hand):
answer = ''
# 12 = ํคํจ๋ *์ ์๋ฏธ, 10 = ํคํจ๋ #์ ์๋ฏธ
tempR = 12 #์ค๋ฅธ์ ์์น ์ ์ฅ
tempL = 10 #์ผ์ ์์น ์ ์ฅ
for i in range(len(numbers)):
if (numbers[i] == 0): #ํคํจ๋ 0 -> ๊ณ์ฐ์ ์ํด 11๋ก ๋ณ๊ฒฝ
numbers[i] = 11
if (numbers[i] == 1 or numbers[i] == 4 or numbers[i] == 7): #1,4,7์ธ ๊ฒฝ์ฐ ์ผ์
answer += "L"
tempL = numbers[i]
elif (numbers[i] == 3 or numbers[i] == 6 or numbers[i] == 9): #3,6,9์ธ ๊ฒฝ์ฐ ์ค๋ฅธ์
answer += "R"
tempR = numbers[i]
else: #2,5,8,7์ธ ๊ฒฝ์ฐ
#๊ฑฐ๋ฆฌ ๊ตฌํจ
temp1 = abs(numbers[i] - tempL)
temp2 = abs(numbers[i] - tempR)
dstL = 0
dstR = 0
#๊ฑฐ๋ฆฌ ๋ณ๋ก ์ซ์ ๋ถ์ฌ
if (temp1 == 1 or temp1 == 3):
dstL = 1
elif (temp1 == 2 or temp1 == 4 or temp1 == 6):
dstL = 2
elif (temp1 == 5 or temp1 == 7 or temp1 == 9):
dstL = 3
elif (temp1 == 8 or temp1 == 10):
dstL = 4
if (temp2 == 1 or temp2 == 3):
dstR = 1
elif (temp2 == 2 or temp2 == 4 or temp2 == 6):
dstR = 2
elif (temp2 == 5 or temp2 == 7 or temp2 == 9):
dstR = 3
elif (temp2 == 8 or temp2 == 10):
dstR = 4
if (dstL < dstR): #์ผ์์ด ๋ ๊ฐ๊น์ด ๊ฒฝ์ฐ
answer += "L"
tempL = numbers[i]
elif (dstL == dstR): #๊ฑฐ๋ฆฌ ๊ฐ์ ๊ฒฝ์ฐ hand๋ฐ๋ผ
if (hand == "right"):
answer += "R"
tempR = numbers[i]
else:
answer += "L"
tempL = numbers[i]
else: #์ค๋ฅธ์์ด ๋ ๊ฐ๊น์ด ๊ฒฝ์ฐ
answer += "R"
tempR = numbers[i]
return answer
๊ณ์ฐ์ ํธ๋ฆฌ๋ฅผ ์ํ์ฌ * = 10, 0 = 11, # = 12๋ก ๋ฐ๊พธ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐ
1) 1,4,7์ธ ๊ฒฝ์ฐ ์ผ์, 3,6,9์ธ ๊ฒฝ์ฐ ์ค๋ฅธ์์ answer์ ์ ์ฅ
2) ๊ทธ ์ธ์ ๊ฒฝ์ฐ -> ๊ฑฐ๋ฆฌ ๊ตฌํ๊ธฐ
2-1) ์ฐจ๋ฅผ ์ด์ฉํ์ฌ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํด ๊ฐ ๊ฑฐ๋ฆฌ๋ณ๋ก ์ซ์ ๋ถ์ฌ
- ์ฐจ๊ฐ 1,3์ธ ๊ฒฝ์ฐ: 1
- ์ฐจ๊ฐ 2,4,6์ธ ๊ฒฝ์ฐ: 2
- ์ฐจ๊ฐ 5,7,9์ธ ๊ฒฝ์ฐ: 3
- ์ฐจ๊ฐ 8,10์ธ ๊ฒฝ์ฐ: 4
2-2) 2-1)์์ ๊ตฌํ ์ซ์๋ฅผ ์ด์ฉํ์ฌ ๋ ๊ฐ๊น์ด ์์ answer์ ์ ์ฅ
- ์ผ์์ด ๋ ๊ฐ๊น์ด ๊ฒฝ์ฐ: L
- ์ค๋ฅธ์์ด ๋ ๊ฐ๊น์ด ๊ฒฝ์ฐ: R
- ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ์ ๊ฒฝ์ฐ: hand ๋ฐ๋ผ
๊ณ ๋ คํด์ผ ํ ๊ฒ์ด ๋ง์ ๋ฌธ์ ์๊ธฐ์ ๋ค๋ฅธ ๋ฌธ์ ๋ค๋ณด๋ค ํด๊ฒฐํ๋๋ฐ ์๊ฐ์ด ์กฐ๊ธ ๋ ๊ฑธ๋ ธ๋ค.
์ถ์ฒ: ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉ ํ ์คํธ ์ฐ์ต, https://programmers.co.kr/learn/challenges