새소식

알고리즘/프로그래머스

[구름톤 챌린지] 1주 차 4일차 학습 일기

  • -
728x90
반응형

 

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

 

N = int(input())
k = list(map(int, input().split()))

max_k = max(k)
when = k.index(max(k))

result = k[0]

for i in range(0, when):
	if k[i] > k[i+1]:
		result = 0
		break
	else:
		result += k[i+1]
		
for i in range(when, len(k)-1):
	if k[i] < k[i+1]:
		result = 0
		break
	else:
		result += k[i+1]
	
	
print (result)

 

배열에서 가장 큰 값과 그 값의 위치를 찾는다.

max_k = max(k)
when = k.index(max(k))

 

아래 코드를 보면 알겠지만 배열의 [0]번째가 for문 안에 들어 있지 않아서 result에 먼저 삽입했다.

result = k[0]

 

가장 큰 값을 기준으로 0부터 큰값, 큰값부터 마지막값으로 나눈다.

각 값들이 이전값보다 크명 0, 아니면 result에 k[i+1]값을 더해준다.

 

 

배열에서 가장 큰 값 위치 찾기

MAX = max(arr) // arr 배열에서 가장 큰 값 찾기
maxIndex = arr.index(MAX) // arr 배열에서 가장 큰 값이 있는 위치 찾기

 

나는 주먹구구식으로 풀었는데 정해에서는 다른 방법으로 풀었다.

max 이전 값의 오름차순정렬과 max 이후값의 내림차순 정렬이 합친게 기존 정렬과 다르면 0이된다.

일정하거나 감소하기 때문에 가능한 결과이다.

 

left = arr[:maxIndex] // 0 부터 maxIndex -1까지 출력
right = arr[maxIndex:] // maxIndex부터 끝까지 출력

 

.sort, sorted() 차이

left.sort()
right.sort(reverse=True) // 내림차순

sortedLeft = sorted(left)
sortedRight = sorted(right, reverse=True)
728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.