[Programmers] 탑

Updated:

탑

탑 을 ν΄λ¦­ν•˜λ©΄ λ°”λ‘œ μ΄λ™ν•œλ‹€.

생각보닀 κ³ μ „ν–ˆλ˜ λ¬Έμ œλ‹€..

μ—„μ²­ 간단할 쀄 μ•Œκ³  ν’€μ—ˆλŠ”λ° μ˜ˆμƒμΉ˜ λͺ»ν•œ μ˜ˆμ™Έκ°€ 쑰금 μžˆμ—ˆλ‹€.

같은 λ†’μ΄μ˜ 탑이 μ†‘μ‹ ν•œ 탑 사이에 μžˆκ±°λ‚˜.. μ†‘μ‹ ν•œ 탑 μ•žμ— 쭈루룩 μžˆκ±°λ‚˜..

list.index(val) 을 ν•˜λ©΄ 쀑볡 κ°’ 쀑 맨 μ•žμ— μžˆλŠ” index λ₯Ό κ°€μ Έμ˜¨λ‹€.

μ—¬κΈ°μ„œ μ½”λ“œκ°€ 꼬이고 λ‚΄ 머리도 κΌ¬μ—¬μ„œ 쑰금 μ‹œκ°„μ΄ κ±Έλ Έλ‹€.

from collections import deque


def solution(height):
	answer = []
	height_rev = deque(height[::-1])

	for loop in height:
		check = height_rev.popleft()
		for val in height_rev:
			if val > check:
				answer.append(len(height_rev) - height_rev.index(val))
				break
		else:
			answer.append(0)

	return answer[::-1]

λ¬Έμ œκ°€ 맨 끝의 탑 λΆ€ν„° 솑신을 ν•΄ 체크λ₯Ό ν•˜λŠ” λ°©μ‹μ΄λΌμ„œ 뒀집어 놓은 큐λ₯Ό λ§Œλ“  ν›„ μ‹œμž‘ν–ˆλ‹€.

μ—¬κΈ°μ„œ μ†‘μ‹ ν•œ 탑보닀 높이가 높은 탑을 λ§Œλ‚œ 경우 κ·Έ 탑이 λͺ‡ 번째 μœ„μΉ˜μ— μžˆλŠ”μ§€λ§Œ μ•Œλ©΄ 됐닀!

12번째 쀄이 핡심인데 val 의 index 값을 μ—„ν•œ κ³³μ—μ„œ κ°€μ Έμ˜€κ³  μžˆμ—ˆλ‹€..

μ²˜μŒμ—λ„ 이 λ°©λ²•μœΌλ‘œ 접근을 ν–ˆλ‹€κ°€ μ•ˆλΌμ„œ numpy 도 써보고.. lambda 도 μ‚¬μš©ν• κΉŒ 생각해보고..

λ³„μ˜λ³„μ§“μ„ λ‹€ν–ˆλ‹€.

μ—­μ‹œ λŠλΌλŠ” 것 μ΄μ§€λ§Œ 머리둜 μƒκ°λ§Œ ν•˜λ©΄μ„œ ν’€λ €κ³  ν•˜λ©΄ μ ˆλŒ€ μ ˆλŒ€ μ•ˆλœλ‹€!!!

μ—¬λŸ¬ μ˜ˆμ‹œκ°€ λŒμ•„κ°€λŠ” 과정을 써 놓고 보면 λΆ„λͺ…νžˆ κ·œμΉ™μ΄ 보인닀 λͺ…심!!


Categories:

Updated:

Leave a comment