๐ŸŒžAlgorithm/๐Ÿ”ฅprogrammers

[programmers] [1์ฐจ] ๋‹คํŠธ ๊ฒŒ์ž„ - 2018 KAKAO BLIND RECRUITMENT

๋ฟŒ์•ผ._. 2021. 1. 4. 20:34

์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์—ฐ์Šต - 2018 KAKAO BLIND RECRUITMENT


<[1์ฐจ] ๋‹คํŠธ ๊ฒŒ์ž„>

 

๋ฌธ์ œ ์„ค๋ช…

 

์นด์นด์˜คํ†ก์— ๋œฌ ๋„ค ๋ฒˆ์งธ ๋ณ„! ์‹ฌ์‹ฌํ•  ๋•? ์นด์นด์˜คํ†ก ๊ฒŒ์ž„๋ณ„~

 

์นด์นด์˜คํ†ก ๊ฒŒ์ž„๋ณ„์˜ ํ•˜๋ฐ˜๊ธฐ ์‹ ๊ทœ ์„œ๋น„์Šค๋กœ ๋‹คํŠธ ๊ฒŒ์ž„์„ ์ถœ์‹œํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. ๋‹คํŠธ ๊ฒŒ์ž„์€ ๋‹คํŠธํŒ์— ๋‹คํŠธ๋ฅผ ์„ธ ์ฐจ๋ก€ ๋˜์ ธ ๊ทธ ์ ์ˆ˜์˜ ํ•ฉ๊ณ„๋กœ ์‹ค๋ ฅ์„ ๊ฒจ๋ฃจ๋Š” ๊ฒŒ์ž„์œผ๋กœ, ๋ชจ๋‘๊ฐ€ ๊ฐ„๋‹จํžˆ ์ฆ๊ธธ ์ˆ˜ ์žˆ๋‹ค.
๊ฐ“ ์ž…์‚ฌํ•œ ๋ฌด์ง€๋Š” ์ฝ”๋”ฉ ์‹ค๋ ฅ์„ ์ธ์ •๋ฐ›์•„ ๊ฒŒ์ž„์˜ ํ•ต์‹ฌ ๋ถ€๋ถ„์ธ ์ ์ˆ˜ ๊ณ„์‚ฐ ๋กœ์ง์„ ๋งก๊ฒŒ ๋˜์—ˆ๋‹ค. ๋‹คํŠธ ๊ฒŒ์ž„์˜ ์ ์ˆ˜ ๊ณ„์‚ฐ ๋กœ์ง์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

  1. ๋‹คํŠธ ๊ฒŒ์ž„์€ ์ด 3๋ฒˆ์˜ ๊ธฐํšŒ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

  2. ๊ฐ ๊ธฐํšŒ๋งˆ๋‹ค ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ ์ˆ˜๋Š” 0์ ์—์„œ 10์ ๊นŒ์ง€์ด๋‹ค.

  3. ์ ์ˆ˜์™€ ํ•จ๊ป˜ Single(S), Double(D), Triple(T) ์˜์—ญ์ด ์กด์žฌํ•˜๊ณ  ๊ฐ ์˜์—ญ ๋‹น์ฒจ ์‹œ ์ ์ˆ˜์—์„œ 1 ์ œ๊ณฑ, 2 ์ œ๊ณฑ, 3 ์ œ๊ณฑ (์ ์ˆ˜ 1, ์ ์ˆ˜ 2, ์ ์ˆ˜ 3)์œผ๋กœ ๊ณ„์‚ฐ๋œ๋‹ค.

  4. ์˜ต์…˜์œผ๋กœ ์Šคํƒ€์ƒ(*) , ์•„์ฐจ์ƒ(#)์ด ์กด์žฌํ•˜๋ฉฐ ์Šคํƒ€์ƒ(*) ๋‹น์ฒจ ์‹œ ํ•ด๋‹น ์ ์ˆ˜์™€ ๋ฐ”๋กœ ์ „์— ์–ป์€ ์ ์ˆ˜๋ฅผ ๊ฐ 2๋ฐฐ๋กœ ๋งŒ๋“ ๋‹ค. ์•„์ฐจ์ƒ(#) ๋‹น์ฒจ ์‹œ ํ•ด๋‹น ์ ์ˆ˜๋Š” ๋งˆ์ด๋„ˆ์Šค๋œ๋‹ค.

  5. ์Šคํƒ€์ƒ(*)์€ ์ฒซ ๋ฒˆ์งธ ๊ธฐํšŒ์—์„œ๋„ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ ์Šคํƒ€์ƒ(*)์˜ ์ ์ˆ˜๋งŒ 2๋ฐฐ๊ฐ€ ๋œ๋‹ค. (์˜ˆ์ œ 4๋ฒˆ ์ฐธ๊ณ )

  6. ์Šคํƒ€์ƒ(*)์˜ ํšจ๊ณผ๋Š” ๋‹ค๋ฅธ ์Šคํƒ€์ƒ(*)์˜ ํšจ๊ณผ์™€ ์ค‘์ฒฉ๋  ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ค‘์ฒฉ๋œ ์Šคํƒ€์ƒ(*) ์ ์ˆ˜๋Š” 4๋ฐฐ๊ฐ€ ๋œ๋‹ค. (์˜ˆ์ œ 4๋ฒˆ ์ฐธ๊ณ )

  7. ์Šคํƒ€์ƒ(*)์˜ ํšจ๊ณผ๋Š” ์•„์ฐจ์ƒ(#)์˜ ํšจ๊ณผ์™€ ์ค‘์ฒฉ๋  ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ค‘์ฒฉ๋œ ์•„์ฐจ์ƒ(#)์˜ ์ ์ˆ˜๋Š” -2๋ฐฐ๊ฐ€ ๋œ๋‹ค. (์˜ˆ์ œ 5๋ฒˆ ์ฐธ๊ณ )

  8. Single(S), Double(D), Triple(T)์€ ์ ์ˆ˜๋งˆ๋‹ค ํ•˜๋‚˜์”ฉ ์กด์žฌํ•œ๋‹ค.

  9. ์Šคํƒ€์ƒ(*), ์•„์ฐจ์ƒ(#)์€ ์ ์ˆ˜๋งˆ๋‹ค ๋‘˜ ์ค‘ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์กด์žฌํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋‹ค.

0~10์˜ ์ •์ˆ˜์™€ ๋ฌธ์ž S, D, T, *, #๋กœ ๊ตฌ์„ฑ๋œ ๋ฌธ์ž์—ด์ด ์ž…๋ ฅ๋  ์‹œ ์ด์ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜๋ผ.

 

 

์ž…๋ ฅ ํ˜•์‹

 

"์ ์ˆ˜|๋ณด๋„ˆ์Šค|[์˜ต์…˜]"์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด 3์„ธํŠธ.
์˜ˆ) 1S2D*3T
- ์ ์ˆ˜๋Š” 0์—์„œ 10 ์‚ฌ์ด์˜ ์ •์ˆ˜์ด๋‹ค. 
- ๋ณด๋„ˆ์Šค๋Š” S, D, T ์ค‘ ํ•˜๋‚˜์ด๋‹ค.  
- ์˜ต์…˜์€ *์ด๋‚˜ # ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ, ์—†์„ ์ˆ˜๋„ ์žˆ๋‹ค.

 

 

์ถœ๋ ฅ ํ˜•์‹

 

3๋ฒˆ์˜ ๊ธฐํšŒ์—์„œ ์–ป์€ ์ ์ˆ˜ ํ•ฉ๊ณ„์— ํ•ด๋‹นํ•˜๋Š” ์ •์ˆ˜ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.
์˜ˆ) 37

 

 

๋ฌธ์ œ ํ’€์ด

    - my solution

def solution(dartResult):

    temp=[]
    for i in range(len(dartResult)):
        x=dartResult[i]
        if(x.isdigit()): #์ˆซ์ž ํŒ๋ณ„
            if(x=="1" and dartResult[i+1]=="0"): #10์ธ ๊ฒฝ์šฐ
                temp.append(10)
            elif(x=="0" and i!=0):
                if(dartResult[i-1]=="1"):
                    pass
                else: #0์ธ ๊ฒฝ์šฐ
                    temp.append(0)
            else: 
                temp.append(int(x))
        if(x=="S"): #Single
            pass
        if(x=="D"): #Double
            temp[-1]*=temp[-1]
        if(x=="T"): #Triple
            temp[-1]*=temp[-1]*temp[-1]
        if(x=="*"): #์Šคํƒ€์ƒ
            if(len(temp)>1):
                temp[-2]*=2
                temp[-1]*=2
            else: #์Šคํƒ€์ƒ - ์ฒซ๋ฒˆ์งธ ๊ธฐํšŒ
                temp[-1]*=2
        if(x=="#"): #์•„์ฐจ์ƒ
            temp[-1]*=-1
            
    return sum(temp)

๋‹จ์ˆœ ๋ฐ˜๋ณต๋ฌธ๊ณผ ์กฐ๊ฑด๋ฌธ์„ ํ™œ์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์˜€๋‹ค!

 

1) ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•˜์—ฌ dartResult ๋ฆฌ์ŠคํŠธ ์ˆœํšŒ

    1-1) ๊ฐ’์ด ์ˆซ์ž์ธ ๊ฒฝ์šฐ 

           1-1-1) 1 ๋‹ค์Œ 0์ธ ๊ฒฝ์šฐ: ๋ฆฌ์ŠคํŠธ์— 10 ์ถ”๊ฐ€

           1-1-2) ๋งจ ์•ž ๊ฐ’์ด ์•„๋‹ˆ๊ณ  0์ธ ๊ฒฝ์šฐ

                    1-1-2-1) ์•ž์ด 1์ด๋ฉด: 1-1-1)์—์„œ 10์„ ์ถ”๊ฐ€ํ–ˆ์œผ๋ฏ€๋กœ pass

                    1-1-2-2) ์•ž์ด ์ด ์•„๋‹ˆ๋ฉด: ๋‹จ์ˆœ ์ ์ˆ˜๊ฐ€ 0์ด๋ฏ€๋กœ ๋ฆฌ์ŠคํŠธ์— 0 ์ถ”๊ฐ€

           1-1-3) ๊ทธ ์™ธ ๊ฒฝ์šฐ: ๋ฆฌ์ŠคํŠธ์— ์ •์ˆ˜ ๊ฐ’ ์ถ”๊ฐ€

    1-2) S์ธ ๊ฒฝ์šฐ: Single - 1 ์ œ๊ณฑ์€ ์›๋ž˜ ๊ฐ’ ๊ทธ๋Œ€๋กœ์ด๋ฏ€๋กœ pass

    1-3) D์ธ ๊ฒฝ์šฐ: Double - 2 ์ œ๊ณฑ

    1-4) T์ธ ๊ฒฝ์šฐ: Triple - 3 ์ œ๊ณฑ

    1-5) *์ธ ๊ฒฝ์šฐ: ์Šคํƒ€์ƒ 

           1-5-1) ์ฒซ ๋ฒˆ์งธ ๊ธฐํšŒ์—์„œ ๋‚˜์˜จ ๊ฒƒ์ด ์•„๋‹Œ ๊ฒฝ์šฐ: ํ•ด๋‹น ์ ์ˆ˜์™€ ๋ฐ”๋กœ ์ „์— ์–ป์€ ์ ์ˆ˜ ๊ฐ 2๋ฐฐ

           1-5-2) ์ฒซ ๋ฒˆ์งธ ๊ธฐํšŒ์—์„œ ๋‚˜์˜จ ๊ฒฝ์šฐ: ์ฒซ ๋ฒˆ์งธ ์ ์ˆ˜๋งŒ 2๋ฐฐ

    1-6) #์ธ ๊ฒฝ์šฐ: ์•„์ฐจ์ƒ - ํ•ด๋‹น ์ ์ˆ˜ ๋งˆ์ด๋„ˆ์Šค

 

์ด๋ ‡๊ฒŒ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•  ๊ฒฝ์šฐ ์Šคํƒ€์ƒ๊ณผ ์•„์ฐจ์ƒ ํšจ๊ณผ์˜ ์ค‘์ฒฉ๋œ๋‹ค๋Š” ์กฐ๊ฑด์˜ ๊ฒฝ์šฐ๋Š” ๋”ฐ๋กœ ๊ตฌํ˜„ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

๋˜ํ•œ ์Šคํƒ€์ƒ๊ณผ ์•„์ฐจ์ƒ์ด ์กด์žฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ๋„ ๋”ฐ๋กœ ๊ตฌํ˜„ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

 

์ด ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ ์ ์ˆ˜๊ฐ€ 10์ ์ผ ๋•Œ ๋”ฐ๋กœ ๊ณ ๋ คํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์ด ๋†“์น˜๊ธฐ ์‰ฌ์šด ๋ถ€๋ถ„์ด์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.


    ์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์—ฐ์Šต, https://programmers.co.kr/learn/challenges