알고리즘 문제 풀기/SWEA

[SWEA 1206] View 조망권 구하기

hibscus 2021. 2. 9. 00:41

💻 문제 풀이 접근 방법

 

 

1) 앞뒤에 2개씩 가지는 새로운 리스트를 만들고

 

2) 리스트 정렬시키고

 

3) 리스트의 맨 뒤의 숫자가 같은경우(즉, 해당 빌딩이 최댓값인 경우)에 그보다 작은 값 중의 최대인 값(list[-2])을 빼면 남은 세대들은 조망권을 가진다.

 

 

🎈 정렬시키지 않고 최댓값, 최솟값을 바로 추출하는 풀이로 하면 더 빠릅니다!

 

저는 강의시간에 배운 버블 정렬을 활용하여 풀어보았습니다:)

 

for tc in range(1, 11):
    num = input()
    arr = list(map(int, input().split()))
    houses = []
    ans = 0
    for i in range(2, len(arr)-2):
        houses = []
        houses = arr[i-2:i+3]
        # 정렬시키는 반복문
        for j in range(1, len(houses)):
            for k in range(0, len(houses)-1):
                if houses[k] > houses[k+1]:
                    houses[k+1], houses[k] = houses[k], houses[k+1]
        # 해당하는 집이 가장 높을 때, 조망권을 가지는 세대 구하는 코드
        if arr[i] == houses[-1]:
            ans += arr[i] - houses[-2]
        else:
            continue
    print(f'#{tc} {ans}')

 

 

 

  • SWEA 1206 - [S/W 문제해결 기본] 1일차 - View
  • 문제링크
  • 문제의 저작권은 SW Expert Academy에 있습니다