๐Ÿ™„ [์นด์นด์˜ค ์ธํ„ด] ํ‚คํŒจ๋“œ ๋ˆ„๋ฅด๊ธฐ

Jake_Youngยท2020๋…„ 8์›” 31์ผ
0

์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ, Coding Test

๋ชฉ๋ก ๋ณด๊ธฐ
3/23
post-thumbnail

๐Ÿ‘‰๋ฌธ์ œ ๋งํฌ


์ •๋‹ต ์ฝ”๋“œ ๋ฐ ํ•ด์„ค

# ๋‚˜์ค‘์— ๊ฑฐ๋ฆฌ ๊ตฌํ•  ๋•Œ ์‚ฌ์šฉํ•  ํ•จ์ˆ˜
def diff(a, b):
    return abs(a[0] - b[0]) + abs(a[1] - b[1])


def solution(numbers, hand):
    answer = ''

# ์™ผ์†๊ณผ ์˜ค๋ฅธ์†์˜ ์ดˆ๊ธฐ ์œ„์น˜
    left, right = [3, 0], [3, 2]
# ํ‚คํŒจ๋“œ 0๋ฒˆ๋ถ€ํ„ฐ 9๋ฒˆ๊นŒ์ง€์˜ ์œ„์น˜ ์ •๋ณด
    key_map = [[3, 1], [0, 0], [0, 1], [0, 2], [1, 0],
               [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]]

    for number in numbers:

# ๋ˆŒ๋Ÿฌ์•ผ ํ•˜๋Š” ๋ฒˆํ˜ธ์˜ ์œ„์น˜ ์ •๋ณด
        key = key_map[number]

# ์™ผ์ชฝ ์ค„๊ณผ ์˜ค๋ฅธ์ชฝ ์ค„์€ ๋น„๊ตํ•  ๊ฒƒ ์—†์ด ์™ผ์† ์˜ค๋ฅธ์†์— ํ• ๋‹น
        if number in [1, 4, 7]:
            answer += "L"
            left = key
        elif number in [3, 6, 9]:
            answer += "R"
            right = key

# ๊ฐ™์„ ๊ฒฝ์šฐ ๊ฐ€๊นŒ์šด ์†์„ ๊ตฌํ•ด์„œ ํ• ๋‹น
        else:
            resource_l = diff(left, key)
            resource_r = diff(right, key)

            if resource_l > resource_r:
                answer += "R"
                right = key
            elif resource_r > resource_l:
                answer += "L"
                left = key

# ๊ฑฐ๋ฆฌ๊นŒ์ง€๋„ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์–ด๋Š์ชฝ ์†์žก์ด์ธ์ง€์— ๋”ฐ๋ผ ํ• ๋‹น
            else:
                if hand == "right":
                    answer += "R"
                    right = key
                else:
                    answer += "L"
                    left = key
    return answer
profile
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ํŒŒ์ด์ฌ ๊ทธ๋ฆฌ๊ณ  ์ปดํ“จํ„ฐ์™€ ๋„คํŠธ์›Œํฌ

0๊ฐœ์˜ ๋Œ“๊ธ€