๐Ÿงก๋ฌธ์ œ ์„ค๋ช…

๋งˆ๋ฒ•์˜ ์„ธ๊ณ„์— ์‚ฌ๋Š” ๋ฏผ์ˆ˜๋Š” ์•„์ฃผ ๋†’์€ ํƒ‘์— ์‚ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํƒ‘์ด ๋„ˆ๋ฌด ๋†’์•„์„œ ๊ฑธ์–ด ๋‹ค๋‹ˆ๊ธฐ ํž˜๋“  ๋ฏผ์ˆ˜๋Š” ๋งˆ๋ฒ•์˜ ์—˜๋ฆฌ๋ฒ ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋งˆ๋ฒ•์˜ ์—˜๋ฆฌ๋ฒ ์ดํ„ฐ์˜ ๋ฒ„ํŠผ์€ ํŠน๋ณ„ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ๋ฒ•์˜ ์—˜๋ฆฌ๋ฒ ์ดํ„ฐ์—๋Š” -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 ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜์„ธ์š”.


๐Ÿ’›์ œํ•œ์‚ฌํ•ญ

  • 1 โ‰ค storey โ‰ค 100,000,000

๐Ÿ’š์ž…์ถœ๋ ฅ ์˜ˆ

storeyresult
166
255416

๐Ÿ’™์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1

  • ๋ฌธ์ œ ์˜ˆ์‹œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2

  • -1, +100์ด ์ ํžŒ ๋ฒ„ํŠผ์„ 4๋ฒˆ, +10์ด ์ ํžŒ ๋ฒ„ํŠผ์„ 5๋ฒˆ, - -1000์ด ์ ํžŒ ๋ฒ„ํŠผ์„ 3๋ฒˆ ๋ˆ„๋ฅด๋ฉด 0์ธต์— ๋„์ฐฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ 16์„ return ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’œ๋‚˜์˜ ํ’€์ด

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
}
profile
๋‚ด ์ง€์‹์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€๋‹ดํ•จ

0๊ฐœ์˜ ๋Œ“๊ธ€