본문 바로가기
Algorithm

[구름톤 챌린지] Day3 완벽한 햄버거 만들기

by 개복취 2023. 8. 20.

N = int(input())

S = list(map(int, input().split()))
get_max_idx = S.index(max(S))

for i in range(get_max_idx):
	if S[get_max_idx - (i + 1)] > S[get_max_idx - i]:
		print(0)
		exit()
		
for j in range(len(S) - get_max_idx - 1):
	if S[get_max_idx + j] < S[get_max_idx + (j + 1)]:
		print(0)
		exit()
	
print(sum(S))

단순 구현 문제이지만 반복을 어디까지 돌릴것인가에 대한 골치아픈 반복문이 등장한 문제였다.

처음에는 3개씩 묶어서 앞뒤 반복해서 찾아가면 되지않을까 생각을 했었지만 도루묵이였다.

 

다음과 같은 과정으로 구현을 신경썼다.

1) 가장 큰 값의 인덱스를 찾아낸다음 피라미드 형태를 가진다고 생각을 했다.

2) 만약 증가하고 있지 않거나 감소하고 있지않으면 '0' 출력하고 종료한다.

 

해답 코드에서는 아래와 같이 left, right 슬라이싱을 해온다음 sorted 또는 sort 된 배열과 비교하는 방식으로 풀었다.

MAX = max(arr)
maxIndex = arr.index(MAX)

left = arr[:maxIndex]
right = arr[maxIndex:]

참고로, for-else 구문을 사용해서 체크과정을 간단히 할 수 있다고 하는데.. 나중가서 휘발될 것 같은 정보라고 생각이들었다.

'Algorithm' 카테고리의 다른 글

[구름톤 챌린지] Day4 이진수 정렬  (0) 2023.08.20