<내 코드>
def solution(heights):
answer = []
re_ans = []
re_heights = list(reversed(heights))
pk = 0
while(pk != len(heights)):
tmp = re_heights[pk]
if(pk == len(heights)-1):
re_ans.append(0)
break
for i in range(pk + 1, len(heights)):
if(tmp < re_heights[i]):
re_ans.append(len(heights) - i)
break
else:
if(i == len(heights)-1):
re_ans.append(0)
pk += 1
answer = list(reversed(re_ans))
return answer
reverse() 함수는 단순히 해당 리스트의 값을 뒤집고, 어떤 값을 리턴하지 않는다.
reversed는 리스트의 함수가 아닌 파이썬 자체의 내장 함수로, 리턴으로 객체를 보내기에 리스트로 값을 얻기 위해 list() 함수를 사용했다.
<다른 풀이>
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
진짜 이렇게 간단하게 해결을 할 수 있다니...정말..경이롭다...
여기서 range를 시작, 끝, 스텝을 이용해 -1씩 감소하게 해 reverse, reversed 없이 가능한 걸 알게 됐다.
반응형
'알고리즘 문제풀기 > 프로그래머스' 카테고리의 다른 글
[JavaScript] 프로그래머스 - 모의고사 (0) | 2020.05.08 |
---|---|
[JavaScript] 프로그래머스 - 위장 (0) | 2020.05.07 |
[JavaScript] 프로그래머스 - 가장 큰 수 (0) | 2020.05.07 |
[JavaScript] 프로그래머스 - K번째 수 (0) | 2020.05.06 |
[JavaScript] 프로그래머스 - 탑 (0) | 2020.05.06 |