[programmers] [μΉ΄μΉ΄μ€ μΈν΄] ν€ν¨λ λλ₯΄κΈ° - 2020 μΉ΄μΉ΄μ€ μΈν΄μ
μ½λ© ν μ€νΈ μ°μ΅ - 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