For Programmer

SWEA 1206 파이썬 문제풀이(View) 본문

코팅테스트/백준 문제 모음

SWEA 1206 파이썬 문제풀이(View)

유지광이 2022. 2. 5. 23:06
728x90

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV134DPqAA8CFAYh& 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 


이 문제는 한 빌딩을 기준으로 직접 양쪽 2개 빌딩의 높이 차를 계산해보면 쉽게 조건을 찾아 풀 수 있다. 

 

for order in range(1, 10 + 1):
    n = int(input())
    gangnam = list(map(int, input().split()))
    count = 0  # 정답을 출력할 변수
    for i in range(2, len(gangnam) - 2):  # 초기 양쪽 2개씩 0을 제외한 인덱스를 돈다.
        max_result = []  # i를 기준으로 양쪽 2개씩 총4개의 조망권을 저장할 리스트 선언
        for j in range(i - 2, i + 3):  # 양쪽으로 2번씩 돈다.
            if i == j:  # 만약 인덱스가 본인이라면 밑에 조건을 실행할 필요가 없으므로 continue
                continue
            result = gangnam[i] - gangnam[j]  # 우선 조망권을 받을 수 있는 층수를 계산하여
            if result < 0:  # 그 값이 음수라면 조망권이 확보된 집이 없으므로
                max_result = []  # 리스트를 다시 비워주고
                break  # 반복문 탈출
            max_result.append(result)  # 조망권 값들을 리스트에 추가해준다.

        if max_result:  # 만약 리스트가 비어있지 않다면
            count += min(max_result)  # 조망권 확보가 가능한 최솟값을 출력변수에 더해준다.

    print(f'#{order} {count}')
728x90
Comments