-
[백준] 2304번 창고 다각형(python)Python/BAEKJOON 2022. 2. 22. 00:10728x90
문제)
알고리즘)
- 입력 과정중에 1. 가장 큰 값(max_data) 2. 가장큰값 index(max_index) 3. 마지막데이터 index(end_index) 갱신
(amx_index 기준)
- 왼쪽 시작 후 이전과 현재 data 중 큰 값을 result에 더하기
- 오른쪽(end_index)부터 max_index까지 이전과 현재 data 중 큰 값을 result에 더하기
코드)
#창고 다각형 import sys input = sys.stdin.readline n = int(input()) case = [0]*1001 result = 0 max_data = 0 max_idx = 0 end_idx = 0 for _ in range(n): #입력부 index, length = map(int, input().split()) case[index] = length if max_data < length: #입력중에 가장 큰 data와 index 갱신 max_data = length max_idx = index end_idx = max(index, end_idx) #마지막 값 index case1 = 0 for a in range(0, max_idx): # max_idx 기준 왼쪽 계산 if case[a] == 0 and case1 == 0: #처음에 나오는 빈칸 제거 continue else: case1 = max(case[a], case1) #이전 값중 큰것을 result에 더하기 result += case1 # max_idx 기준 오른편 계산 case1 = 0 for b in range(end_idx, max_idx-1, -1): #왼쪽과 같은 방식 끝에서부터 max_idx까지 case1 = max(case1, case[b]) result += case1 #최종 출력 print(result)
728x90'Python > BAEKJOON' 카테고리의 다른 글
[백준] 2346번 풍선 터트리기(python) (0) 2022.02.28 [백준] 16948번 데스 나이트(python) (0) 2022.02.22 [백준] 3036번 링(python) (0) 2022.02.15 [백준] 1431번 시리얼번호(python) (0) 2022.02.15 [백준] 1260번 DFS와 BFS(python) (0) 2022.01.29