Coding

[Programmers] ๋‹คํŠธ ๊ฒŒ์ž„

๋‚จ๋ฐ”์˜ค 2023. 3. 15. 23:41

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

 

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

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

programmers.co.kr

 

๋ฌธ์ œ ํ•ด๊ฒฐ

1. ์ฒ˜์Œ์—๋Š” for๋ฌธ์œผ๋กœ ํ•˜๋‚˜์”ฉ ๋น„๊ตํ•ด์„œ ๊ณ„์‚ฐํ•˜๋ ค๋‹ค๊ฐ€ ๋ฐ”๋กœ,, ์•„ ์ด ์ „์— ๋‚˜์˜จ ์ˆซ์ž๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ๋˜๋‚˜? ํ•ด์„œ ํ๋กœ ํ’€๊ธฐ ์‹œ์ž‘

2. bonus ๊ณ„์‚ฐํ•  ๋•Œ ํ•˜๋‚˜์”ฉ if๋ฌธ์œผ๋กœ ๋น„๊ตํ–ˆ๋‹ค๊ฐ€ ์ฝ”๋“œ๊ฐ€ ๊ธธ์–ด์ ธ์„œ ๋”•์…”๋„ˆ๋ฆฌ๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๋‹ˆ๊นŒ ํ›จ์”ฌ ๊น”๋”ํ•ด์ง๐Ÿคฉ

3. ๋ฌธ์ œ๋Š” option์ด์—ˆ๋Š”๋ฐ,, ๋ฌธ์ œ๋ฅผ ์ •๋ง ๋Œ€์ถฉ ๋ดค๋‹ค๊ฐ€ #์ผ ๋•Œ๋Š” ๊ทธ ๋•Œ ์ˆซ์ž๋งŒ, *์ผ ๋• ์ด์ „ ์ˆซ์ž๊นŒ์ง€๋งŒ ๊ณฑํ•ด์ง€๋Š” ๊ฑธ ๋‚˜์ค‘์— ์™œ ๊ฒฐ๊ณผ๊ฐ€ ๊ณ„์† ํ‹€๋ฆฌ์ง€? ํ•˜๋‹ค๊ฐ€ ๋‹ค์‹œ ๋ณด๊ณ  ๊นจ๋‹ฌ์Œ ๐Ÿ˜‡ ๋ฐ”๋ณด

 

์—ญ์‹œ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค๋ฅผ ๋• ๋””๋ฒ„๊น…ํ•˜๋ฉด์„œ ๋‹ค์‹œ ๋ณด๋ฉด,, ๋‹ค ๋‹ต์ด ์žˆ๋‹ค

#์ˆซ์ž์™€ ๋ณด๋„ˆ์Šค๋ฅผ ๋‘ ๊ฐœ๋ฅผ ๋ชจ๋‘ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ์–ด์•ผ ๋˜๊ธฐ ๋•Œ๋ฌธ์— queue๋กœ ํ’€์ด
def solution(dartResult):
    score = 0
    q = []
    dartResult = dartResult.replace("10", "A")
    bonus = {'S': 1, 'D': 2, 'T': 3}

    for word in dartResult:
        if word.isdigit() or word == 'A':
            q.append(10 if word == 'A' else int(word)) 

        elif word in ('S', 'D', 'T'):
            q.append(q.pop() ** bonus[word])

        elif word == '#':
            q.append(q.pop() * (-1))

        elif word == '*':
            score = q.pop()
            if q:
                q.append(q.pop() * 2)
            q.append(score * 2)

    return sum(q)