0%

[프로그래머스] 탑

프로그래머스 - 스택/큐

Code (Python)

  • 스택/큐 문제. 아마 스택으로 풀면 되지 않을까 싶은데 정작 스택으로 안 푼 문제.
  • 끝에서부터 처음까지 비교해, 만약 앞의 수가 클 경우 인덱스를 정답 배열에 넣고, 그게 아닐 경우 0을 정답 배열에 넣는다.
  • 역순으로 저장했으니 reverse() 메소드로 정렬한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def solution(heights):
length = len(heights)
answer = []
while length > 0:
length = length - 1
for i in range(length, -1, -1):
if heights[length] < heights[i]:
answer.append(i + 1)
break
if i == 0 and heights[length] >= heights[i]:
answer.append(0)

answer.reverse()
return answer

다른 사람의 코드 1

  • 정답 배열에 길이만큼 0을 먼저 집어넣고, 조건(h[i] < h[j])에 맞을 경우에만 값을 바꿔줬다.
1
2
3
4
5
6
7
8
def solution(h):
ans = [0] * len(h)
for i in range(len(h)-1, 0, -1):
for j in range(i-1, -1, -1):
if h[i] < h[j]:
ans[i] = j+1
break
return ans