๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Coding Test/Algorithms

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ/Python - Lv.2

by The Future Engineer, Lucy 2025. 1. 27.
728x90
๋ฐ˜์‘ํ˜•

โ“๋ฌธ์ œ

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

์„ฑ๋Šฅ ์š”์•ฝ

๋ฉ”๋ชจ๋ฆฌ: 14.7 MB, ์‹œ๊ฐ„: 129.68 ms

๊ตฌ๋ถ„

Greedy

๋ฌธ์ œ ์„ค๋ช…

์–ด๋–ค ์ˆซ์ž์—์„œ k๊ฐœ์˜ ์ˆ˜๋ฅผ ์ œ๊ฑฐํ–ˆ์„ ๋•Œ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋ฅผ ๊ตฌํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์ˆซ์ž 1924์—์„œ ์ˆ˜ ๋‘ ๊ฐœ๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด [19, 12, 14, 92, 94, 24] ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ค‘ ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋Š” 94 ์ž…๋‹ˆ๋‹ค.

๋ฌธ์ž์—ด ํ˜•์‹์œผ๋กœ ์ˆซ์ž number์™€ ์ œ๊ฑฐํ•  ์ˆ˜์˜ ๊ฐœ์ˆ˜ k๊ฐ€ solution ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. number์—์„œ k ๊ฐœ์˜ ์ˆ˜๋ฅผ ์ œ๊ฑฐํ–ˆ์„ ๋•Œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ˆ˜ ์ค‘ ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋ฅผ ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜์„ธ์š”.

์ œํ•œ ์กฐ๊ฑด

  • number๋Š” 2์ž๋ฆฌ ์ด์ƒ, 1,000,000์ž๋ฆฌ ์ดํ•˜์ธ ์ˆซ์ž์ž…๋‹ˆ๋‹ค.
  • k๋Š” 1 ์ด์ƒ number์˜ ์ž๋ฆฟ์ˆ˜ ๋ฏธ๋งŒ์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

number k return
"1924" 2 "94"
"1231234" 3 "3234"
"4177252841" 4 "775841"

โœ๐Ÿปํ’€์ด

k๊ฐœ๋งŒํผ ์ œ๊ฑฐํ•ด์„œ ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค. ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์ฒซ ๋ฒˆ์งธ ์ˆซ์ž๊ฐ€ ํฌ๋ฉด ๋œ๋‹ค.

4177252841์„ ์˜ˆ๋กœ ์ƒ๊ฐํ•ด๋ณด์ž. 4๊ฐœ๋ฅผ ๋ชจ๋‘ ์ œ๊ฑฐํ•˜์˜€์„ ๋•Œ ๋‚จ์€ ์ˆซ์ž์˜ ์ˆ˜๋Š” 6๊ฐœ์ด๋‹ค. ์ด ๋•Œ, ๋งจ ์•ž์— ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ˆ˜๋Š” 7์ด ๋œ๋‹ค.
๊ทธ๋ ‡๋‹ค๋ฉด ์šฐ๋ฆฌ๋Š” 4์™€ 1์„ ์ œ๊ฑฐํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

4์™€ 1์„ ์ œ๊ฑฐํ•˜๊ณ  k๋ฅผ ๊ฐ์†Œ์‹œํ‚จ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด 7์ด ๋งจ ์•ž ์ž๋ฆฌ ์ˆซ์ž๊ฐ€ ๋œ๋‹ค. ์œ„์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ง„ํ–‰ํ•˜๋ฉด

7๊ณผ 2๋ฅผ ์ง€๋‚˜ 5๊ฐ€ ์žˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์•„์ง ์ˆซ์ž๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๊ณ  5๊ฐ€ 2๋ณด๋‹ค ๋” ํฌ๋ฏ€๋กœ ํฐ ์ˆ˜๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด 2๋ฅผ ์ œ๊ฑฐํ•ด์•ผ ํ•œ๋‹ค.
๊ทธ๋Ÿฌ๋ฏ€๋กœ 2๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  k๋ฅผ 1 ๊ฐ์†Œํ•˜๋ฉด ๋œ๋‹ค.

๋‚˜๋จธ์ง€๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ•˜๋ฉด ๊ฒฐ๊ตญ ๋‚จ๋Š” ์ˆซ์ž๋Š” 75841์ด ๋œ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์œ„์™€ ๊ฐ™์€ ๋ฐฉ์‹์€ ํฐ ์ˆซ์ž๊ฐ€ ๋‚˜์˜ค๋ฉด ์ž‘์€ ์ˆซ์ž๋“ค์„ ์ง€์šฐ๋Š” ๋ฐฉ์‹์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋งŒ์•ฝ ๋’ค์— ์žˆ๋Š” ์ˆซ์ž๋“ค์ด ๋‹ค ์ž‘์•„์„œ ์ง€์›Œ์ง€์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 10์ด ์ฃผ์–ด์ง„๋‹ค๋ฉด ์ด ๋•Œ k = 1๋กœ 1๊ฐœ๋ฅผ ์ œ๊ฑฐํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์šฐ๋ฆฌ๋Š” ๋‚จ์€ ๊ฐœ์ˆ˜๋งŒํผ ๋’ท๋ถ€๋ถ„์—์„œ ์ œ๊ฑฐํ•˜๋ฉด ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ํฐ ์ˆ˜๋Š” 1์ด ๋œ๋‹ค.

๐Ÿ’ป์ฝ”๋“œ

def solution(number, k):
    answer = ''
    num = []
    for n in number:
        while len(num) > 0 and num[-1] < n and k > 0:
            num.pop()
            k -= 1
        num.append(n)
    
    return answer.join(num[:len(number)-k]) # ๋‚จ์€ k๋งŒํผ ๋’ท๋ถ€๋ถ„์—์„œ ์ œ๊ฑฐ.

๐Ÿ“ํ›„๊ธฐ

์ˆ˜ํ•™ ๊ณต๋ถ€๋ฅผ ์–ด๋–ป๊ฒŒ ํ–ˆ์—ˆ์ง€๋ผ๋Š” ์ƒ๊ฐ์œผ๋กœ ๋‹ค์‹œ ๊ณต๋ถ€ํ•˜๋ ค๋‹ˆ๊นŒ ์–ด๋–ป๊ฒŒ ๊ณต๋ถ€ํ•ด์•ผ ํ• ์ง€ ๊ฐ์ด ์žกํžˆ๋Š” ๋Š๋‚Œ์ด๋‹ค.

728x90
๋ฐ˜์‘ํ˜•