Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 더 잘 보이는 건물을 찾는 프로그램

<시간/>

다른 건물의 높이를 포함하는 배열이 제공된다고 가정합니다. 건물이 일렬로 늘어서 있고 다른 고층 건물에 가려져 있지 않으면 건물이 더 잘 보입니다. 따라서 높이를 포함하는 배열이 제공되면 다른 높은 건물이 없는 건물에서 시야를 가리는 건물을 찾아야 합니다. 기준을 만족하는 배열에서 인덱스가 반환됩니다.

따라서 입력이 height =[5, 6, 8, 7]과 같으면 출력은 [2, 3]이 됩니다. 배열 인덱스 0과 1의 건물은 인덱스 2의 건물에 의해 차단됩니다. 인덱스 2와 3의 건물은 위치 2의 높은 건물이 위치 3의 짧은 건물 뒤에 있기 때문에 차단되지 않습니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • res :=새 목록
  • 시간 :=0
  • i의 경우(높이 크기 - 1) ~ -1, 1 감소, do
    • 높이[i]> h이면
      • res 끝에 i 삽입
      • h :=높이[i]
  • 목록 res의 역순으로 반환

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

def solve(heights):
   res, h = [], 0
   for i in range(len(heights) - 1, -1, -1):
      if heights[i] > h:
         res.append(i)
         h = heights[i]
   return res[::-1]

print(solve([5, 6, 8, 7]))

입력

[5, 6, 8, 7]

출력

[2, 3]