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]자리에 채워줌으로서 더 간결한 코드

 

반응형