알고리즘 공부/파이썬(Python)

SWEA 1206번 D3 [S/W 문제해결 기본] 1일차 - View 파이썬

마달랭 2024. 6. 30. 16:18
반응형

리뷰

최악의 케이스를 봤을때 10 * 1000 * 4로 총 4만이므로 시간이 널널할 것으로 예상되어 시간 복잡도 신경 안쓰고 풀었다.

문제 풀이

  1. 테스트 케이스가 10개이므로 range가 10인 for문을 시작한다.
  2. 비교하기 쉽게 하기 위해 리스트를 받아올 때 앞 뒤로 0을 2개씩 넣어 주었다.
  3. 앞 뒤 0이 아닌 범위만 for문을 돌려 현재 위치 기준 좌우 2의 건물 크기중 가장 큰 값을 현재 건물과 비교한다.
  4. 현재 건물의 크기가 좌우 2 건물의 크기보다 클 경우 result에 그 차이만큼 더해준다.
  5. 이후 테스트케이스 번호와 함께 result 값을 출력

참고 사항

없음

정답 코드

def q1206():
    # SWEA 1206번 D3 [S/W 문제해결 기본] 1일차 - View 파이썬
    for i in range(1, 11):
        n = int(input())
        lst = [0] * 2 + list(map(int, input().split())) + [0] * 2
        result = 0
        for j in range(2, len(lst) - 2):
            temp = lst[j] - max(max(lst[j-2:j]), max(lst[j + 1:j + 3]))
            if temp > 0:
                result += temp
        print(f'#{i} {result}')
q1206()

 

728x90
반응형