๐Ÿ’ป์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋ฌธ์ œํ’€์ด15

์ง€๋ฏผ์„œยท2023๋…„ 3์›” 14์ผ
0

coding test

๋ชฉ๋ก ๋ณด๊ธฐ
14/30

Chapter10. ๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ

[๋ฌธ์ œ42] ๋„๋‘‘์งˆ - Level4

์ดˆ ๋‹จ์œ„๋กœ ๊ธฐ๋ก๋œ ์ฃผ์‹๊ฐ€๊ฒฉ์ด ๋‹ด๊ธด ๋ฐฐ์—ด prices๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๊ฐ€๊ฒฉ์ด ๋–จ์–ด์ง€์ง€ ์•Š์€ ๊ธฐ๊ฐ„์€ ๋ช‡ ์ดˆ์ธ์ง€๋ฅผ returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜์„ธ์š”.

[์ œํ•œ์‚ฌํ•ญ]

  • prices์˜ ๊ฐ ๊ฐ€๊ฒฉ์€ 1 ์ด์ƒ 10,000 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • prices์˜ ๊ธธ์ด๋Š” 2 ์ด์ƒ 100,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.

[๋ฌธ์ œํ’€์ด]

def solution(prices):
	size = len(prices)
    answer = [0] * size
    for i in range(size):
    	for j in range(i + 1, size):
        	if prices[i] <= prices[j]: answer[i] += 1
            else:
            	answer[i] += 1
                break
    return answer

[์ฝ”๋“œ์ž‘์„ฑ]

1. ์ฃผ์‹ ๊ฐ€๊ฒฉ์„ ์Œ“์•„๋‘˜ ์Šคํƒ๊ณผ ์ƒ์Šน์„ธ๊ฐ€ ์–ผ๋งˆ๋‚˜ ์˜ค๋ž˜ ์ง€์†๋˜์—ˆ๋Š”์ง€์— ๋Œ€ํ•ด ๊ธฐ๋ก์„ ๋‚จ๊ธธ ๋ฐฐ์—ด์„ ์ƒ์„ฑ

def solution(prices):
	stack = []
    answer = [0] * len(prices)

2. ๊ฐ ๊ธˆ์•ก์˜ ์ •๋ณด๋ฅผ for๋ฌธ์œผ๋กœ ์ˆœํšŒํ•˜๋ฉด์„œ ์ƒ์Šน์„ธ ์—ฌ๋ถ€๋ฅผ ํ™•์ธ

for i in range(len(prices)):
	while stack and prices[stack[-1]] > prices[i]:
    	past = stsack.pop()
        answer[past] = i - past
    stack.append(i)

3. ๋‚จ์€ ์Šคํƒ์„ ์ „๋ถ€ ๋น„์šฐ๊ณ , ์ •๋‹ต์„ ๋ฐ˜ํ™˜

for i in stack:
	answer[i] = len(prices) - 1 - i
    
return answer

[์ „์ฒด์ฝ”๋“œ]

def solution(prices):
	stack = []
    answer = [0] * len(prices)
    for i in range(len(prices)):
        while stack and prices[stack[-1]] > prices[i]:
            past = stsack.pop()
            answer[past] = i - past
        stack.append(i)
        
    for i in stack:
	answer[i] = len(prices) - 1 - i
    
return answer
profile
๐Ÿ’ป + ๐ŸŽฅ

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