본문 바로가기
공부-코딩테스트/코테풀이 - 자바, 파이썬

1206. [S/W 문제해결 기본] 1일차 - View (코딩테스트, SW Expert Academy)

by 령과 2022. 5. 6.

문제

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

 

SW Expert Academy

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

swexpertacademy.com

나의 코드 :8분 21초

T = 10

for test_case in range(1, T + 1):
    num = int(input())
    input_list = list(map(int, input().split()))
    answer = 0
    for i in range(2,num-2):
        target = input_list[i-2:i+3]
        if max(target) == target[2]:
            target.sort()
            answer+=(target[-1]-target[-2])
    print("#"+str(test_case),answer)

여유시간 20분정도 남아서 빨리 풀만한 문제로 선택해서 풀었다.

어떤 식으로 문제를 풀지 생각하는게 더 걸린 문제

무식하게 푸는 방법은 바로생각났으나 좀더 쉽게 풀기 위해 생각해봄

 

빌딩 하나를 기준으로 양 옆 2개씩 묶어서 길이가 5인 리스트를 target으로 잡는다.

만약 타겟의 중심이 되는 빌딩이 가장 높은 건물이 아니면 조망권을 확보한 세대는 없으므로 다음 빌딩으로 넘어간다.

만약 가장 높은 건물이 중심이 되는 건물이라면? 두번째로 높은 빌딩과의 차이를 count한다.

댓글