
소스 코드
# -*- coding: utf-8 -*-
# UTF-8 encoding when using korean
size = int(input())
arr = list(map(int, input().split()))
decreasing = False
ans = arr[0]
for i in range(1, size):
ans += arr[i]
if not decreasing:
if arr[i] >= arr[i-1]:
continue
else:
decreasing = True
continue
else:
if arr[i] > arr[i-1]:
ans = 0
break
print(ans)
# 문제 풀이
# 주어진 배열의 원소값이 증가하다가 감소하면 된다. 증감의 변화는 한번만 이루어져야한다. 감소하는 상태로 돌입했다면 끝까지 감소해야한다.
# 배열의 두번째 원소부터 순차적으로 탐색한다. 이전 원소와 비교하면서 증가했는지 감소했는지 판단하고, 이전에 감소하지 않았다가 감소하는 상태로 변했을 경우 감소하는 상태라고 체크해둔 후 이어서 탐색한다.
# 감소하는 상태에서 증가하는 상태로 변했다면 이는 잘못된 햄버거 이므로 0을 출력한다.
문제 풀이
주어진 배열의 원소값이 차례대로 증가하다가 감소하면 된다. 증감의 변화는 한번만 이루어져야하는게 핵심이다.
배열의 두번째 원소부터 순차적으로 탐색한다. 이전 원소와 비교하면서 수가 증가했는지 감소했는지 판단하고, 처음 감소하는 상태로 변했을 경우 감소하는 상태라고 체크해둔 후 이어서 탐색한다. 만약 감소하는 상태에서 증가하는 상태로 변했다면 이는 잘못된 햄버거이므로 0을 출력한다.
올바른 햄버거일 경우 햄버거 배열 원소의 합을 출력한다.
느낀 점
decreasing 변수를 이용해서 감소상태를 판별하려고 했던 생각이 좋았던 것 같다.
1주차라 그런지 아직까지는 할만한 것 같아서 기분이 좋다!
'Computer Science > Algorithm' 카테고리의 다른 글
| [구름톤 챌린지] Day10 : GameJam (2) | 2023.08.27 |
|---|---|
| [구름톤 챌린지] Day9 : 폭탄 구현하기(2) (0) | 2023.08.27 |
| [구름톤 챌린지] Day5 : 이진수 정렬 (0) | 2023.08.20 |
| [백준] 7579번 : 앱 (Python) (0) | 2023.05.02 |
| [백준] 12865번 : 평범한 배낭 (Python) (0) | 2023.05.01 |