Algorithm

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋‹คํŠธ ๊ฒŒ์ž„ (KAKAO BLIND RECRUITMENT) - Python

lerrybe 2023. 2. 22. 21:57

 

[1์ฐจ] 2018 KAKAO BLIND RECRUITMENT - Lv1.

๐ŸŒต ๋ฌธ์ œ


https://school.programmers.co.kr/learn/courses/30/lessons/17682

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

 

๐Ÿš€ ํ’€์ด


์Šคํƒ์„ ์ด์šฉํ•˜๋ฉด ๊ณ„์‚ฐํ•˜๊ธฐ์— ํŽธํ•˜๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ, ์ˆซ์ž๋ฅผ ๋งˆ์ฃผํ•˜๋ฉด ์Šคํƒ์— ๋„ฃ์–ด์ฃผ๊ณ  ์•„๋‹Œ ๊ฒฝ์šฐ ์—ฐ์‚ฐํ•˜์—ฌ ์—ฐ์‚ฐ๋œ ๊ฒฐ๊ณผ๋ฅผ ๋„ฃ์–ด์คฌ์Šต๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ ํ•œ ๋ฌธ์ž์”ฉ ์ฝ๊ฒŒ๋˜๋Š”๋ฐ ์ •์ˆ˜์˜ ๋ฒ”์œ„๋Š” 1~10์ด๋ฏ€๋กœ 10์€ ๋ฐ˜๋ณต๋ฌธ ๋Œ๊ธฐ ์ด์ „์— '@' ๋ฌธ์ž๋กœ ๋ฐ”๊ฟ”์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ์ˆซ์ž๋กœ ๋˜์–ด์žˆ๋Š” ๋ฌธ์ž๋ฅผ ํŒ๋ณ„ํ•˜๋Š” ๊ณผ์ •์€ isNumChar ํ•จ์ˆ˜๋กœ ๋นผ์ฃผ์—ˆ๊ณ , ์Šคํƒ์— ๋„ฃ์„ ๋•Œ '@'๋ฅผ ๋งŒ๋‚˜๋ฉด ์ •์ˆ˜ 10์ด ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค. 


๐Ÿ’ก ํ’€์ด ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. 

def isNumChar(char):
    if 48 <= ord(char) and ord(char) <= 57:
        return True
    if char == '@':
        return True
    return False

def solution(dartResult):
    s = []
    price = {'*': 2, '#': -1}
    bonus = {'S': 1, 'D': 2, 'T': 3}

    for char in dartResult.replace('10', '@'):
        if isNumChar(char):
            s.append(int(char) if char != '@' else 10)
        if char in bonus:
            num = s.pop()
            s.append(num ** bonus[char])
        if char in price:
            s[-1] *= price[char]
        if char == '*' and len(s) > 1:
            s[-2] *= price[char]
    return sum(s)