구름톤 챌린지 완벽한 햄버거 만들기 파이썬
더보기
❍ 문제
구름 햄버거는 다양한 재료를 사용하여 만들어서 맛있기로 유명하다. 구름 햄버거는 N개의 재료를 순서대로 쌓아서 만들고, 구름 햄버거의 맛은 사용된 모든 재료의 맛의 정도를 더한 값이다.
완벽한 구름 햄버거를 만들기 위해서는 맛의 정도가 가장 높은 재료를 기준으로 위랑 아래로 갈 수록 재료의 맛의 정도가 감소하거나 같아야 한다.
플레이어는 N개의 재료를 순서대로 쌓아서 구름 햄버거를 하나 만들었다. i번째로 쌓은 재료의 맛의 정도가 $k_i$라고 할 때, 플레이어가 만든 구름 햄버거의 맛을 구해보자.
만약 플레이어가 완벽하지 않은 구름 햄버거를 만들었다면 0 을 출력한다.
❍ 입력
첫째 줄에 구름 햄버거에 들어가는 재료의 개수 N개가 주어진다.
그 다음 줄에 플레이어가 햄버거를 만들 때 쓴 재료의 맛의 정도 $k_i, …, k_N$가 공백을 두고 주어진다.
- $1 \leq N \leq 1000$
- $1 \leq k_i \leq 10^6$
- 입력에서 주어지는 모든 수는 정수이다.
❍ 출력
플레이어가 만든 구름 햄버거의 맛을 출력한다. 만약 플레이어가 완벽하지 않은 구름 햄버거를 만들었다면 0을 출력한다.
❏ 문제 풀이
가장 높은 수를 기준으로 왼쪽은 오름차순, 오른쪽은 내림차순으로 이루어져있는지를 체크하는 문제이다.
근데, 혹시나 싶어서 오른쪽만 내림차순인지 확인해주고 왼쪽은 확인을 안해주었는데, 통과가 되었다. ...?
아마도 테스트 케이스 모두 왼쪽은 오름차순으로 주어져있던 것 같다.
추후에 좌우의 정렬을 적용시켜 비교해주는 방식으로 코드를 변경해주었다.
❍ CODE
import sys
input = sys.stdin.readline
N = int(input())
K = list(map(int, input().split()))
top_val = max(K)
top = K.index(top_val)
K1 = K[:top]
K2 = K[top:]
result = 0
for i in K1:
result += i
prev = K2[0]
for i in K2:
result += i
if i > prev:
result = 0
break
prev = i
print(result)
❍ CODE
import sys
input = sys.stdin.readline
N = int(input())
K = list(map(int, input().split()))
top_val = max(K)
top = K.index(top_val)
K1 = K[:top]
K2 = K[top:]
K1.sort()
K2.sort(reverse=True)
sortedK = K1 + K2
for i in range(N):
if K[i] != sortedK[i]:
print(0)
break
else:
print(sum(K))
for ~ else는 사용해본적이 없었는데, 해설 코드를 보고 사용해보았다.
반응형