Focus On Develop ๐ŸคŸ๐ŸคŸ

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ ๋ณธ๋ฌธ

iOS [Swift]/์•Œ๊ณ ๋ฆฌ์ฆ˜

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ

๋ˆ„๋ฆฌ๋‹ฌ์ดํ‹€ 2020. 12. 23. 23:42

<๋ฌธ์ œ>


<์ „๋žต์งœ๊ธฐ>

์‹œ๋„๋Š”.. ํฐ ์ˆ˜๊ฐ€ ์•ž์— ์˜ฌ์ˆ˜๋ก ์ข‹์€๊ฒƒ์ด์—ฌ! ์ข‹์€๊ฒŒ ์ข‹์€๊ฒƒ์ด์—ฌ! ๐Ÿ‘ ๋ผ๋Š” ํŒ๋‹จ์œผ๋กœ ์‹œ์ž‘ํ•œ๋‹ค. k๊ฐœ๋ฅผ ์ง€์šด๋‹ค๋Š” ๊ฒƒ์€ ๊ฒฐ๊ณผ๋ฅผ number.count - k ์ž๋ฆฌ ์ˆ˜๋กœ ๋งŒ๋“ ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ฃผ์–ด์ง„ number์—์„œ ๋“ฑ์žฅํ•˜๋Š” ์ˆซ์ž๋ฅผ Set์œผ๋กœ ์ค‘๋ณต์ œ๊ฑฐํ•œ ํ›„์— ์ •๋ ฌํ•œ๋‹ค๋ฉด, ๋“ฑ์žฅํ•˜๋Š” ์ˆซ์ž๋“ค์—์„œ ํฐ์ˆ˜๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿผ ๊ฐ€์žฅ ํฐ ์ˆ˜๊ฐ€ number์—์„œ ๋“ฑ์žฅํ•˜๋Š” ์ฒซ๋ฒˆ์งธ index๋ฅผ ์ฐพ๊ณ , ์ด ๊ฐ’์ด ๊ฒฐ๊ณผ๊ฐ’์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์„๊นŒ? (๊ฒฐ๊ณผ๊ฐ’์˜ ๋‚จ์€ ์ž๋ฆฌ์ˆ˜๋ณด๋‹ค number์—์„œ ์ด๊ฐ’ ๋’ค์— ๋‚จ์€ ์ˆซ์ž์˜ ๊ฐฏ์ˆ˜๊ฐ€ ๋งŽ์•„์•ผํ•จ)๋ฅผ ์ฒดํฌํ•œ ๋’ค์—.. ํ•˜๋‚˜์”ฉ ๋„ฃ์–ด์ฃผ๋ฉด ๋˜๊ฒ ๊ตฐ! ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉํ•œ ๊ฐ€์žฅ ํฐ ์ˆ˜์™€, number์—์„œ ์ฒ˜์Œ~ํฐ์ˆ˜๊ฐ€ ์กด์žฌํ–ˆ๋˜ ์ธ๋ฑ์Šค๊นŒ์ง€๋ฅผ ์‚ญ์ œํ•ด์ค€๋‹ค.(์ด์ „๊ฐ’์€ ํ•„์š”๋„ ์—†์„๋ฟ๋”๋Ÿฌ ํƒ์ƒ‰ ์‹œ๊ฐ„๋งŒ ๋Šฆ์ถค ใ…‹ใ…‹ ) ์˜ˆ๋ฅผ๋“ค์–ด์„œ.. "1231234" ์ผ€์ด์Šค๋ฅผ ์ƒ๊ฐํ•ด๋ณด๋ฉด, ์ฒ˜์Œ์— 4๋ฅผ ๊ฐ€์ ธ์˜ค๋Š”๋ฐ ์ด๊ฑด ์ž๋ฆฟ์ˆ˜ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜์ง€ ๋ชปํ•œ๋‹ค. ๊ทธ ๋‹ค์Œ์€ 3์„ ๊ฐ€์ ธ์˜ค๊ณ , ์ฒซ๋ฒˆ์งธ ๋“ฑ์žฅํ•˜๋Š” 3์ด 2๋ฒˆ์ธ๋ฑ์Šค์— ์žˆ๋„ค?? ์˜ค์ผ€์ด. ๊ทธ๋ฆฌ๊ณ  ๋‚จ์€์ž๋ฆฟ์ˆ˜๋„ ์•„์ง 0์ด๊ณ (๊ฒฐ๊ณผ์— ๋“ค์–ด๊ฐ„ ์ˆ˜๊ฐ€ ์—†์Œ) 3 ๋’ค์— ์žˆ๋Š” ์ˆซ์ž์˜ ๊ฐฏ์ˆ˜๋„ 3ํฌํ•จ 5๊ฐœ๋‹ˆ๊นŒ ์ž๋ฆฟ์ˆ˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š”๊ตฐ! ํ•˜๊ณ  3์„ ๊ฒฐ๊ณผ์— ๋„ฃ์–ด์ค€ ํ›„์—, 0๋ฒˆ~2๋ฒˆ ์ธ๋ฑ์Šค ๊ฐ’์„ ์ง€์›Œ์ค€๋‹ค. ๊ทธ๋Ÿผ 1234๊ฐ€ ๋‚จ๊ณ  ๊ฐ™์€ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๋ฉด, ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

๐Ÿ‘‰ 7~10๋ฒˆ ์ผ€์ด์Šค์—์„œ ์‹œ๊ฐ„์ดˆ๊ณผ ๐Ÿ˜ญ

 

์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋– ์„œ ํ•œ์ฐธ ๋ฆฌํŽ™ํ† ๋ง์„ ๊ณ ๋ฏผํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ๋ถˆํ•„์š”ํ•œ ์ •๋ ฌ์ด๋‚˜ ํƒ์ƒ‰์ด ์—†๋Š”์ง€.. ํ—ˆํ—ˆ ๊ทธ๋Ÿฌ๋‚˜ ์•„๋ฌด๋ฆฌ ๋œฏ์–ด๊ณ ์ณ๋Œ€๋„ 7~10๋ฒˆ ์‹œ๊ฐ„์ดˆ๊ณผ ใ…‹ใ…‹ ๋‹ค์‹œ ์ „๋žต์งœ๊ธฐ.. stack์˜ ๊ฐœ๋…์„ ํ™œ์šฉํ•ด๋ณด์ž. ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ทธ๋ƒฅ ๋˜๋Š”๋Œ€๋กœ ๊ฒฐ๊ณผ์— ๋„ฃ์„๊ฑฐ์•ผ. ๋‹ค๋งŒ! ์กฐ๊ฑด์ด์žˆ์–ด.. ์ด ์Šคํƒ์˜ ๋งˆ์ง€๋ง‰์— ๋“ค์–ด์žˆ๋Š” ์ˆ˜๋ณด๋‹ค ์ง€๊ธˆ ๋“ค์–ด๊ฐˆ ์ˆ˜๊ฐ€ ํฌ๋‹ˆ? ๊ทธ๋Ÿผ ์•ž์— ๊ฒƒ์„ Pop ํ•˜๊ณ  ๋“ค์–ด๊ฐ€๋ฉด ๋ผ. (์ด๊ฑธ ํ™•์ธํ•˜๋ ค๋ฉด ์ผ๋‹จ ์Šคํƒ์ด ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ๊ฒ ๊ตฐ?) ๊ทธ๋ฆฌ๊ณ .. ์ด ์ƒˆ๋กœ์šด ์ˆซ์ž๊ฐ€ ๋“ค์–ด๊ฐˆ๋•Œ stack์˜ ๋งˆ์ง€๋ง‰ ์ˆ˜๋ฅผ Popํ•ด์„œ ๋‚ ๋ ธ๋‹ˆ? ๊ทธ๋Ÿผ ๊ทธ๋•Œ๋งˆ๋‹ค popํ•œ ํšŸ์ˆ˜๋ฅผ ์ €์žฅํ• ๊ฑด๋ฐ.. ๊ทธ pop ํ•œ ํšŸ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„ k๋ณด๋‹ค๋Š” ํฌ๋ฉด ์•ˆ๋˜๊ธฐ๋•Œ๋ฌธ์ด์ง€..!! ๋ผ๋Š” ์ƒ๊ฐ์œผ๋กœ ์ญ‰~ ๋Œ๋ฆฌ๋ฉด ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ฌ ๊ฒƒ ๊ฐ™๋‹ค!

 

<์ฝ”๋“œ>

import Foundation

func solution(_ number:String, _ k:Int) -> String {
    let number = number.map { String($0) }
    var stack: [String] = []
    var delCnt = 0
    
    for n in number {
        while !stack.isEmpty && delCnt < k && stack.last! < n {
            stack.removeLast()
            delCnt += 1
        }
        stack.append(n)
    }
    while stack.count > number.count-k {
        stack.removeLast()
    }
    
    return stack.joined()
}

 

<Lesson Learned>

์†”์งํžˆ ์ƒˆ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด์„œ, ์ œ์ผ ์˜ค๋ž˜ ๊ฑธ๋ฆฐ ๋ฌธ์ œ๋‹ค..ใ…Ž ์‚ฝ์งˆ๊ณผ ์‚ฝ์งˆ์˜ ๋ฐ˜๋ณต(์‹œ๊ฐ„์ดˆ๊ณผ์™€ ์˜ˆ์™ธ์ผ€์ด์Šค์˜ ๊ตด๋ ˆ..)์œผ๋กœ.. 2์‹œ๊ฐ„์€ ํ‘ผ ๊ฒƒ ๊ฐ™๋‹ค ๐Ÿ˜ญ (์–ด๋”” ์ฝ”๋”ฉํ…Œ์ŠคํŠธ์˜€์œผ๋ฉด ์Šˆ.ํผ.๊ด‘.ํƒˆ ๐Ÿ‘Š) ๊ทธ๋ž˜์„œ ๊ฒฐ๊ตญ ํ•ด๋ƒˆ์œผ๋‹ˆ ๋‹คํ–‰์ด๊ธด ํ•˜๋„ค ใ…‹ใ…‹!!! ๋‘๋ฒˆ์งธ ์ „๋žต์—์„œ๋„ 12๋ฒˆ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋ฅผ ๊ณ„์† ํ‹€๋ ธ๋Š”๋ฐ, ํ‰์†Œ์—๋Š” ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐ ์ž˜ํ•˜๋˜ ๋งˆ์ง€๋ง‰ ๊ฒฝ๊ณ„์ ์— ๋Œ€ํ•œ ์ƒ๊ฐ์„ ๋น ๋œจ๋ ธ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์ƒ๊ฐํ•ด๋ณด๋ฉด 54321 ์ฒ˜๋Ÿผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ๋Š” ์ž…๋ ฅ์ด ๋“ค์–ด์˜ค๋ฉด.. ๋ญ ๊ฑฐ๋ฅด๊ณ  popํ• ๊ฒƒ๋„ ์—†์ด 54321์„ ๊ฒฐ๊ณผ๋กœ ๋ฐ›์•„๋ฒ„๋ฆฐ๋‹ค..ํ•˜ํ•˜.. ๊ทธ๋ž˜์„œ ๋งˆ์ง€๋ง‰์— ๋‚ด ๊ฒฐ๊ณผ(stack)์ด ๊ฐ€๋Šฅํ•œ ์ž๋ฆฟ์ˆ˜๋ณด๋‹ค ์ปค์ ธ๋ฒ„๋ ธ๋‹ˆ? ๊ทธ๋Ÿผ ๋งˆ์ง€๋ง‰ ๊ฒƒ์„ ์ˆœ์ฐจ๋กœ ์ž˜๋ผ! ๋ผ๋Š” ๋กœ์ง์„ ๋„ฃ์–ด์คฌ๋‹ค.. ๐Ÿ˜‚ ์•”ํŠผ ์šฐ์—ฌ๊ณก์ ˆ๋์— ํ’€์–ด์„œ ๋ฐฐ์šด๊ฒŒ ์žˆ์–ด์„œ ๋‹คํ–‰์ด๋‹ค~~~~ ๋ฌธ์ œ ํ’€๊ธฐ์ „์— Brute Force ์ƒ๊ฐ๋ณด๋‹ค๋Š” ์ผ๋‹จ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ์ ์ ˆํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ์žˆ๋Š”์ง€ ์ถฉ๋ถ„ํžˆ ๊ณ ๋ฏผํ•ด๋ณด๊ณ  ์‹œ์ž‘ํ•ด์•ผ๊ฒ ๋‹ค ๐Ÿ‘ ๋‹ค๋ฅธ์‚ฌ๋žŒ์˜ ํ’€์ด๋ฅผ ๋ดค์„๋•Œ๋„ ์†”์งํžˆ ์ด๊ฑด ๋‚ด๊ฐ€ ์ ค ์ž˜ํ‘ผ๊ฒƒ ๊ฐ™๋‹ค !! 

 

 

 

์ถœ์ € : ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ

Comments