๊ด€๋ฆฌ ๋ฉ”๋‰ด

Algo ์“ฐ์ž

[Programmers] ํ‚คํŒจ๋“œ ๋ˆ„๋ฅด๊ธฐ ๋ณธ๋ฌธ

๐Ÿ’ฏ CodingTest/Programmers

[Programmers] ํ‚คํŒจ๋“œ ๋ˆ„๋ฅด๊ธฐ

S.Honey 2022. 4. 18. 09:23

โ–ถ ๋ฌธ์ œ : 

 

 

โ–ถ ์ฝ”๋“œ : 

keyPad = {
    '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) 
    }


def solution(numbers, hand):
    answer=''
    left = '*'
    right = '#'
    
    for num in numbers:
        if num in [1, 4, 7] :
            answer += 'L'
            left = str(num)
        elif num in [3, 6, 9] :
            answer += 'R'
            right= str(num)
        else:
            leftLength = abs(keyPad[left][0] - keyPad[str(num)][0]) + abs(keyPad[left][1] - keyPad[str(num)][1])
            # ํ˜„์žฌ ์™ผ์†์œ„์น˜์—์„œ ๋ชฉํ‘œ๊นŒ์ง€ ๊ฑฐ๋ฆฌ
            rightLength = abs(keyPad[right][0] - keyPad[str(num)][0]) + abs(keyPad[right][1] - keyPad[str(num)][1])
            # ํ˜„์žฌ ์˜ค๋ฅธ์†์œ„์น˜์—์„œ ๋ชฉํ‘œ๊นŒ์ง€ ๊ฑฐ๋ฆฌ
            if leftLength < rightLength:
                answer += 'L'
                left = str(num)
            elif leftLength > rightLength:
                answer+='R'
                right = str(num)
            else:
                if hand == 'left':
                    answer+='L'
                    left = str(num)
                else:
                    answer+='R'
                    right = str(num)
    return answer

 

โ–ถ ๋ฌธ์ œ ํ•ด์„ค :

1. ๊ฐ๊ฐ์˜ ํ‚คํŒจ๋“œ์— ๋Œ€ํ•œ ์ขŒํ‘œ๋ฅผ ํ•ด์‹œํ…Œ์ด๋ธ”์— ์ €์žฅ => (0,0) ์€ 1๋ฒˆ

2. ์ดํ›„ ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด์— ๋Œ€ํ•ด ๊ฐ๊ฐ์˜ ๋ฒˆํ˜ธ์ธ ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ์—ˆ์Œ