๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“š Algorithm/Programmers

Progammers ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - [๋’ค์— ์žˆ๋Š” ํฐ ์ˆ˜ ์ฐพ๊ธฐ] Python ํŒŒ์ด์ฌ ํ’€์ด

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

๐Ÿ“ ๋ฌธ์ œ

 

๐Ÿšซ ์ œํ•œ ์‚ฌํ•ญ

 

โœ๏ธ ์ž…์ถœ๋ ฅ

 

์ž…์ถœ๋ ฅ ์˜ˆ #1
2์˜ ๋’ท ํฐ์ˆ˜๋Š” 3์ž…๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ 3์˜ ๋’ท ํฐ์ˆ˜๋Š” 5์ž…๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ 3 ๋˜ํ•œ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. 5๋Š” ๋’ท ํฐ์ˆ˜๊ฐ€ ์—†์œผ๋ฏ€๋กœ -1์ž…๋‹ˆ๋‹ค. ์œ„ ์ˆ˜๋“ค์„ ์ฐจ๋ก€๋Œ€๋กœ ๋ฐฐ์—ด์— ๋‹ด์œผ๋ฉด [3, 5, 5, -1]์ด ๋ฉ๋‹ˆ๋‹ค.

 

๐Ÿ’ก ํ’€์ด

์ž์‹ ๋ณด๋‹ค ํฌ๋ฉด์„œ ๊ฐ€๊นŒ์ด ์žˆ๋Š” ์ˆ˜๋ฅผ answer์— ์ €์žฅํ•ด์•ผ ํ•œ๋‹ค. 

numbers์˜ ๋งˆ์ง€๋ง‰ ์ˆ˜๋Š” ๋น„๊ต ๋Œ€์ƒ์ด ์—†์œผ๋ฏ€๋กœ result์˜ ๋งˆ์ง€๋ง‰์€ ํ•ญ์ƒ -1์ด ๋  ๊ฒƒ์ด๋‹ค. 

์ฒ˜์Œ์—๋Š” ์ด์ค‘ for๋ฌธ์„ ์‚ฌ์šฉํ•ด ํ’€์—ˆ๋‹ค. ์‹œ๊ฐ„์ดˆ๊ณผ ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ์•„๋ฌด๋ž˜๋„ ์ œํ•œ ์‚ฌํ•ญ์—์„œ numbers์™€ numbers[i]์˜ ํฌ๊ธฐ๋ฅผ ํฌ๊ฒŒ ์žก์•„์„œ ๊ทธ๋Ÿฐ ๊ฒƒ ๊ฐ™๋‹ค. 

์ดํ›„, ํ•ด๊ฒฐํ•œ ๋ฐฉ๋ฒ•์€ stack์„ ์‚ฌ์šฉํ–ˆ๋‹ค. 

stack์˜ top์„ numbers[i]์™€ ๋น„๊ตํ•ด์„œ ๊ฒฐ๊ณผ๋ฅผ answer์— ๊ฐฑ์‹ ํ•˜๋„๋ก ํ–ˆ๋‹ค. 

 

 

1. ์ˆซ์ž๋“ค์„ ์ €์žฅํ•  ์Šคํƒ ์ƒ์„ฑ, answer ๋ฆฌ์ŠคํŠธ -1๋กœ ์ดˆ๊ธฐํ™”

2. numbers์˜ ๊ธธ์ด๋งŒํผ ๋ฐ˜๋ณต๋ฌธ

3. while๋ฌธ -> ์Šคํƒ์— ์š”์†Œ๊ฐ€ ์กด์žฌํ•˜๊ณ , ์Šคํƒ์˜ top์— ์žˆ๋Š” ์ธ๋ฑ์Šค์— ํ•ด๋‹นํ•˜๋Š” ์ˆซ์ž๊ฐ€ ํ˜„์žฌ ์ˆœํšŒ ์ค‘์ธ ์ˆซ์ž๋ณด๋‹ค ์ž‘์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต

4. ๋” ํฐ ์ˆซ์ž๋ฅผ ๋ฐœ๊ฒฌํ•˜๋ฉด answer ๊ฐฑ์‹ 

 

 

def solution(numbers):
    stack = []  # ์ˆซ์ž๋“ค์„ ์ €์žฅํ•  ์Šคํƒ
    answer = [-1] * len(numbers)  # ๊ฒฐ๊ณผ ๋ฆฌ์ŠคํŠธ๋ฅผ -1๋กœ ์ดˆ๊ธฐํ™”
    
    for i in range(len(numbers)):
        while stack and numbers[stack[-1]] < numbers[i]:
            answer[stack.pop()] = numbers[i]  # ๋” ํฐ ์ˆซ์ž๋ฅผ ๋ฐœ๊ฒฌํ•˜๋ฉด ์Šคํƒ์—์„œ ํŒํ•˜๋ฉฐ ๊ฒฐ๊ณผ๋ฅผ ๊ฐฑ์‹ 
        
        stack.append(i)  # ํ˜„์žฌ ์ธ๋ฑ์Šค๋ฅผ ์Šคํƒ์— ์ถ”๊ฐ€
    
    return answer

 

 

 

 

728x90