PS/Python
[PYTHON] 프로그래머스 #42588 탑
yoo.o
2020. 3. 14. 01:51
반응형
문제
수평 직선에 탑 N대를 세웠습니다. 모든 탑의 꼭대기에는 신호를 송/수신하는 장치를 설치했습니다. 발사한 신호는 신호를 보낸 탑보다 높은 탑에서만 수신합니다. 또한, 한 번 수신된 신호는 다른 탑으로 송신되지 않습니다.
맨 왼쪽부터 순서대로 탑의 높이를 담은 배열 heights가 매개변수로 주어질 때 각 탑이 쏜 신호를 어느 탑에서 받았는지 기록한 배열을 return 하도록 solution 함수를 작성해주세요.
나의 풀이
def solution(heights):
answer = []
for i in range(len(heights)):
j = i - 1
flag = 0
while j >= 0:
if heights[i] < heights[j]: # 크기 비교
answer.append(j+1)
flag = 1
break
j -= 1
if flag == 0: # if none is appended
answer.append(0)
return answer
다른 풀이
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
flag를 따로 설정하지 않고 ans = [0] * len(h)로 미리 채워두고, append 대신 ans[i]자리에 채워줌으로서 더 간결한 코드
반응형