Algorithm

๊ทธ๋ฆฌ๋””/ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ / ์Šคํƒ

์ •ํ˜ธ๋‚˜ 2024. 12. 28. 23:12

๐Ÿ“• ๋ฌธ์ œ

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

 

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

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

 

 

 

 

๐Ÿ“„ ๋‚ด๊ฐ€ ์ƒ๊ฐํ•œ ํ’€์ด

# 1. ๋ชจ๋“  ์กฐํ•ฉ: len(number) - k ๊ฐœ ์ˆซ์ž์—์„œ ๋‚˜์˜ฌ ๋ชจ๋“  ์กฐํ•ฉ
# 2. sort()๋กœ ์ •๋ ฌ
# 3. maxํ•จ์ˆ˜๋กœ ๊ฐ€์žฅ ํฐ ์ˆ˜ ์ฐพ๊ธฐ

 

๐Ÿ’ป ๋‚ด ์ฝ”๋“œ

 



from itertools import combinations

def solution(number, k):
 
    
    x = len(number) - k
    
    
    num_list = list(combinations(number, x))
  

    # print(num_list)
    
    answer = max(''.join(i) for i in num_list)
    
                    
                                 
    return answer

์กฐํ•ฉ ์‚ฌ์šฉํ•ด์„œ ํ’€์—ˆ๋Š”๋ฐ ์‹œ๊ฐ„์ดˆ๊ณผ๋กœ ์‹คํŒจ

-> ์Šคํƒ์‚ฌ์šฉํ•˜๊ธฐ

maxํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๋ฉด sort ์‚ฌ์šฉํ•  ํ•„์š” ์—†์Œ

 

 

 

 

๐Ÿ’ป ๋‹ต์•ˆ

def solution(number, k):
    stack = []  # ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•  ์Šคํƒ
    
    for num in number:
        # ์Šคํƒ์˜ ๋งˆ์ง€๋ง‰ ์ˆซ์ž๊ฐ€ ํ˜„์žฌ ์ˆซ์ž๋ณด๋‹ค ์ž‘๊ณ , ์ œ๊ฑฐํ•  ๊ธฐํšŒ(k)๊ฐ€ ๋‚จ์•„ ์žˆ๋‹ค๋ฉด ์ œ๊ฑฐ
        while stack and k > 0 and stack[-1] < num:
            stack.pop()
            k -= 1
        # ํ˜„์žฌ ์ˆซ์ž๋ฅผ ์Šคํƒ์— ์ถ”๊ฐ€
        stack.append(num)
    
    # k๊ฐ€ ๋‚จ์•„์žˆ๋‹ค๋ฉด ๋’ค์—์„œ๋ถ€ํ„ฐ ์ œ๊ฑฐ
    if k > 0:
        stack = stack[:-k]
    
    # ์Šคํƒ์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜
    return ''.join(stack)

 

 

์„ค๋ช…

  1. ๋ฃจํ”„ ๋™์ž‘:
    • ์ˆซ์ž๋ฅผ ํ•˜๋‚˜์”ฉ ์ฒ˜๋ฆฌํ•˜๋ฉฐ ์Šคํƒ์— ๋„ฃ์Šต๋‹ˆ๋‹ค.
    • ๋„ฃ๊ธฐ ์ „์— ์Šคํƒ์˜ ๋งˆ์ง€๋ง‰ ์ˆซ์ž์™€ ๋น„๊ตํ•˜์—ฌ, ํ˜„์žฌ ์ˆซ์ž๊ฐ€ ๋” ํฌ๋ฉด ์Šคํƒ์˜ ์ˆซ์ž๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
    • ์ œ๊ฑฐ๋Š” k๋ฒˆ๊นŒ์ง€๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  2. k๊ฐ€ ๋‚จ์•„์žˆ๋Š” ๊ฒฝ์šฐ:
    • ๋ฃจํ”„๊ฐ€ ๋๋‚œ ๋’ค์—๋„ k๊ฐ€ ๋‚จ์•„์žˆ๋‹ค๋ฉด, ์Šคํƒ์˜ ๋’ค์—์„œ k๋งŒํผ ์ˆซ์ž๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
  3. ์ตœ์ข… ๊ฒฐ๊ณผ:
    • ์Šคํƒ์— ๋‚จ์•„์žˆ๋Š” ์ˆซ์ž๋ฅผ ๋ฌธ์ž์—ด๋กœ ํ•ฉ์ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
 

๋™์ž‘ ๊ณผ์ • ์˜ˆ์‹œ

Input: "1924", k = 2

  1. ์ดˆ๊ธฐ ์ƒํƒœ: stack = [], k = 2
  2. ์ฒซ ๋ฒˆ์งธ ์ˆซ์ž '1': stack = ['1']
  3. ๋‘ ๋ฒˆ์งธ ์ˆซ์ž '9':
    • '9' > '1', stack.pop(), k = 1
    • stack = ['9']
  4. ์„ธ ๋ฒˆ์งธ ์ˆซ์ž '2': stack = ['9', '2']
  5. ๋„ค ๋ฒˆ์งธ ์ˆซ์ž '4':
    • '4' > '2', stack.pop(), k = 0
    • stack = ['9', '4']
  6. ๊ฒฐ๊ณผ: '94'

 

 

 

๐Ÿ“ ์ฐธ๊ณ ์ž๋ฃŒ

 

โ˜บ๏ธ ์ƒˆ๋กœ ์•Œ๊ฒŒ ๋œ ์ง€์‹

์žฅ์ 

  • ์กฐํ•ฉ์„ ์‚ฌ์šฉํ•œ ๋ฐฉ์‹์€ ๋น„ํšจ์œจ์ ์œผ๋กœ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ํƒ์ƒ‰ํ•˜์ง€๋งŒ, ์Šคํƒ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•œ ๋ฒˆ์˜ ์ˆœํšŒ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
  • O(n) ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ ๋Œ€๊ทœ๋ชจ ์ž…๋ ฅ์—๋„ ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.

 

๐Ÿ˜‰ ๋ฆฌ๋ทฐ

 

์Šคํƒ ๊ตฌํ˜„ ์ตํžˆ๊ธฐ