
๐งก๋ฌธ์  ์ค๋ช
๋ง๋ฒ์ ์ธ๊ณ์ ์ฌ๋ ๋ฏผ์๋ ์์ฃผ ๋์ ํ์ ์ด๊ณ ์์ต๋๋ค. ํ์ด ๋๋ฌด ๋์์ ๊ฑธ์ด ๋ค๋๊ธฐ ํ๋ ๋ฏผ์๋ ๋ง๋ฒ์ ์๋ฆฌ๋ฒ ์ดํฐ๋ฅผ ๋ง๋ค์์ต๋๋ค. ๋ง๋ฒ์ ์๋ฆฌ๋ฒ ์ดํฐ์ ๋ฒํผ์ ํน๋ณํฉ๋๋ค. ๋ง๋ฒ์ ์๋ฆฌ๋ฒ ์ดํฐ์๋ -1, +1, -10, +10, -100, +100 ๋ฑ๊ณผ ๊ฐ์ด ์ ๋๊ฐ์ด 10c (c โฅ 0 ์ธ ์ ์) ํํ์ธ ์ ์๋ค์ด ์ ํ ๋ฒํผ์ด ์์ต๋๋ค. ๋ง๋ฒ์ ์๋ฆฌ๋ฒ ์ดํฐ์ ๋ฒํผ์ ๋๋ฅด๋ฉด ํ์ฌ ์ธต ์์ ๋ฒํผ์ ์ ํ ์๋ ๊ฐ์ ๋ํ ์ธต์ผ๋ก ์ด๋ํ๊ฒ ๋ฉ๋๋ค. ๋จ, ์๋ฆฌ๋ฒ ์ดํฐ๊ฐ ์์นํด ์๋ ์ธต๊ณผ ๋ฒํผ์ ๊ฐ์ ๋ํ ๊ฒฐ๊ณผ๊ฐ 0๋ณด๋ค ์์ผ๋ฉด ์๋ฆฌ๋ฒ ์ดํฐ๋ ์์ง์ด์ง ์์ต๋๋ค. ๋ฏผ์์ ์ธ๊ณ์์๋ 0์ธต์ด ๊ฐ์ฅ ์๋์ธต์ด๋ฉฐ ์๋ฆฌ๋ฒ ์ดํฐ๋ ํ์ฌ ๋ฏผ์๊ฐ ์๋ ์ธต์ ์์ต๋๋ค.
๋ง๋ฒ์ ์๋ฆฌ๋ฒ ์ดํฐ๋ฅผ ์์ง์ด๊ธฐ ์ํด์ ๋ฒํผ ํ ๋ฒ๋น ๋ง๋ฒ์ ๋ ํ ๊ฐ๋ฅผ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.์๋ฅผ ๋ค์ด, 16์ธต์ ์๋ ๋ฏผ์๊ฐ 0์ธต์ผ๋ก ๊ฐ๋ ค๋ฉด -1์ด ์ ํ ๋ฒํผ์ 6๋ฒ, -10์ด ์ ํ ๋ฒํผ์ 1๋ฒ ๋๋ฌ ๋ง๋ฒ์ ๋ 7๊ฐ๋ฅผ ์๋ชจํ์ฌ 0์ธต์ผ๋ก ๊ฐ ์ ์์ต๋๋ค. ํ์ง๋ง, +1์ด ์ ํ ๋ฒํผ์ 4๋ฒ, -10์ด ์ ํ ๋ฒํผ 2๋ฒ์ ๋๋ฅด๋ฉด ๋ง๋ฒ์ ๋ 6๊ฐ๋ฅผ ์๋ชจํ์ฌ 0์ธต์ผ๋ก ๊ฐ ์ ์์ต๋๋ค.
๋ง๋ฒ์ ๋์ ์๋ผ๊ธฐ ์ํด ๋ฏผ์๋ ํญ์ ์ต์ํ์ ๋ฒํผ์ ๋๋ฌ์ ์ด๋ํ๋ ค๊ณ  ํฉ๋๋ค. ๋ฏผ์๊ฐ ์ด๋ค ์ธต์์ ์๋ฆฌ๋ฒ ์ดํฐ๋ฅผ ํ๊ณ  0์ธต์ผ๋ก ๋ด๋ ค๊ฐ๋๋ฐ ํ์ํ ๋ง๋ฒ์ ๋์ ์ต์ ๊ฐ์๋ฅผ ์๊ณ  ์ถ์ต๋๋ค. ๋ฏผ์์ ๋ง๋ฒ์ ์๋ฆฌ๋ฒ ์ดํฐ๊ฐ ์๋ ์ธต์ ๋ํ๋ด๋ ์ ์ storey ๊ฐ ์ฃผ์ด์ก์ ๋, 0์ธต์ผ๋ก ๊ฐ๊ธฐ ์ํด ํ์ํ ๋ง๋ฒ์ ๋์ ์ต์๊ฐ์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์ธ์.
๐์ ํ์ฌํญ
storey โค 100,000,000๐์ ์ถ๋ ฅ ์
| storey | result | 
|---|---|
| 16 | 6 | 
| 2554 | 16 | 
๐์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
์ ์ถ๋ ฅ ์ #2
๐๋์ ํ์ด
function solution(storey) {
    // ์ ๋ต ๋ณ์
    let result = 0
    // ์๋ฆฟ์ ๋ณ ๋ถ๋ฆฌ
    const splitStorey = String(storey).split("").map(a => Number(a))
    // ์๋ฆฟ์ ๋ณ ๋ฐ๋ณต
    for(let i = splitStorey.length-1 ; i >= 0 ; i --) {
        if(splitStorey[i] > 5) {
            // ์ด๋ฒ ์๋ฆฟ์๊ฐ 0๊น์ง ์ฌ๋ผ๊ฐ๋ฉฐ ๋ค์ ์๋ฆฟ์์ +1
            result+= 10-splitStorey[i]
            // ๋ง์ง๋ง ์๋ฆฟ์๋ผ๋ฉด ์ ๋ต ๋ฐฐ์ด์ +1
            if(i === 0) {
                result++
            }
            splitStorey[i-1]++
            // ์ด๋ฒ ์๋ฆฟ์๊ฐ 5์ด๊ณ  ๋ค์ ์๋ฆฟ์๋ 5๋ฅผ ๋๋๋ค๋ฉด ์ฌ๋ฆผ
        } else if(splitStorey[i] === 5 && i > 0 && splitStorey[i-1] >= 5) {
            result+= 5
            splitStorey[i-1]++    
        } else {
            // ์ด๋ฒ ์๋ฆฟ์๊ฐ 0์ด ๋ ๋๊น์ง -1
            result+= splitStorey[i]
        } 
    }
    return result
}