Mo!
[구름톤 챌린지] 4일차 - 문제 4. 완벽한 햄버거 만들기 (Python) 본문
Coding Test

[구름톤 챌린지] 4일차 - 문제 4. 완벽한 햄버거 만들기 (Python)

5사 2023. 8. 20.
 

구름LEVEL

난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다.

level.goorm.io


문제 4. 완벽한 햄버거 만들기

해당 문제는 정렬을 활용해서 주어지는 값들이 올바르게 배치되어 있는지 확인하는 문제입니다. 국내 알고리즘 경진대회 변형 문제입니다.

 

 

N = int(input()) # 재료의 개수
klist = list(map(int, input().split())) # 각 재료의 맛의 정도를 담은 리스트

def hamburger(N, klist):
	answer = 0
	max_k = 0 # 가장 높은 맛의 정도
	pre_k = 1000001 # 현재 순회 이전 맛의 정도 값을 저장
	temp = True # True이면 맛의 정도 증가, False는 감소
	
	for k in klist:
		max_k = max(max_k, k)
		
		if temp: # 증가하는 상태일시
			pre_k = k
			answer += k
			if max_k > k : # 가장 높은 맛의 정도가 현재 맛의 정도보다 크다면 감소하는 상태
				temp = False 
				
		else: # 감소하는 상태일시
			if max_k == k or pre_k < k:
				print(0)
				return
			pre_k = k
			answer += k
			
	print(answer)
	return

hamburger(N, klist)
  • 처음 풀이는 반복문을 통해서 맛의 정도 최댓값을 기준으로 현재 증가하는 상태인지, 감소하는 상태인지에 따라 완벽 여부에 맞는지 조건을 판단하였다.
  • 반복문 없이도 맛의 정도가 가장 높은 재료의 인덱스 값을 기준으로 리스트를 두 개로 나누어 문제 조건에 맞게 각각 정렬한 후 다시 하나의 리스트로 합치고, 그렇게 합쳐진 리스트가 원래의 리스트와 같은지를 판단하는 방법도 있었다.
N = int(input()) # 재료의 개수
klist = list(map(int, input().split())) # 각 재료의 맛의 정도를 담은 리스트

max_k_idx = klist.index(max(klist)) # 맛의 정도가 가장 높은 재료의 인덱스 값
asc_k_list = sorted(klist[:max_k_idx]) # 맛의 정도가 증가하는 부분
desc_k_list = sorted(klist[max_k_idx:], reverse=True) # 맛의 정도가 감소하는 부분

sorted_k_list = asc_k_list + desc_k_list # 문제 조건에 맞는 완벽한 정렬된 맛의 정도 리스트

if klist != sorted_k_list: # 원래 리스트와 정렬된 리스트가 다르다면
	print(0) # 완벽하지 않은 상태이기 때문에 0 출력
else:
	print(sum(klist))
Comments