๐Ÿค–/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค | Lv2] ๋งˆ๋ฒ•์˜ ์—˜๋ฆฌ๋ฒ ์ดํ„ฐ (Python)

sssbin 2023. 2. 3. 17:31

 

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

 

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

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

programmers.co.kr

 

 

๊ฐ€๋ณ๊ฒŒ ์ƒ๊ฐํ–ˆ๋‹ค๊ฐ€ ์ŠคํŠธ๋ ˆ์Šค ๋ฐ›์•„์„œ ์ฃฝ์„ ๋ป” ํ•จใ… ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ ๊ฐˆ ๊ธธ์ด ๋ฉ€๋‹ค...

 

์ฒซ ์‹œ๋„ -> ํ…Œ์ผ€ ๋‹ค ๋งž์•„์„œ ์˜ค!! ํ–ˆ๋Š”๋ฐ ์ฑ„์  ๊ฒฐ๊ณผ ๋‘ ๋ฌธ์ œ ๋งžํž˜;;

๋‘ ๋ฒˆ์งธ ์‹œ๋„ -> ํ…Œ์ผ€๋„ ์ด๊ฒƒ์ €๊ฒƒ ์ถ”๊ฐ€ํ•˜๊ณ  ๋‹ค ๋งž์•„์„œ ๊ธฐ๋Œ€ํ–ˆ๋Š”๋ฐ ๋˜ ํ‹€๋ฆผ.

์„ธ ๋ฒˆ์งธ ์‹œ๋„ -> ๊ฒŒ์‹œํŒ ํƒ์ƒ‰ ํ›„ "5"๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‹ต์ด ๋‹ฌ๋ผ์ง„๋‹ค๋Š”๊ฑธ ์บ์น˜. ๊ทผ๋ฐ ๋˜ ํ‹€๋ฆผ.

๋„ค ๋ฒˆ์งธ ์‹œ๋„ -> ์ผ์˜ ์ž๋ฆฌ๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ  ์žˆ์„ ๋•Œ๋ฅผ ์ƒ๊ฐ ๋ชปํ–ˆ๋‹ค๋Š” ๊ฑธ ์บ์น˜,, ์ •๋‹ต,,

 

# ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 14853: ๋งˆ๋ฒ•์˜ ์—˜๋ฆฌ๋ฒ ์ดํ„ฐ

def solution(storey):
    answer = 0
    c = len(str(storey)) - 1
    temp = storey // 10**c
    
    while True:
        if temp < 5:
            answer += temp
            storey %= 10**c
        elif temp == 5:
            if c == 0:
                answer += 5
                break
            if (int(str(storey)[-c])) >= 5:
                answer += 1
                storey = 10**(c+1) - storey
            else:
                answer += temp
                storey %= 10**c
        else:
            answer += 1
            storey = 10**(c+1) - storey
        
        if (temp == storey) and c == 0:
            break

        c = len(str(storey)) - 1
        temp = storey // 10**c
        
    return answer