반응형
문제
풀이
n = input()
array = list(map(int,input().split()))
def solution():
left = array[0] # 첫 시작
answer = left # 총합
desc = False
for i in range(1,len(array)): 1번째부터 n번째까지
right = array[i]
if left < right: # 오름차순
if desc == False:
answer += right
left = array[i]
else: # 오른쪽 값이 더 큰데 내림차순이라면 잘못된 햄버거
return 0
elif left > right: # 내림차순
desc = True
answer += right
left = array[i]
else: # 같을 때
answer += right
left = array[i]
return answer
print(solution())
1. 처음에는 max() 함수를 이용하여 양 옆을 비교할랬으나 이미 max() 자체가 시간복잡도 O(N)이라 다른 방법을 고민하는게 어려웠음
2. 내림차순부터는 계속해서 오른쪽값이 더 작아야하기에 desc라는 flag를 세워 내림차순인데 오른쪽 값이 더 크면 잘못된 로직이므로 0을 출력
3. 제대로 되었다면 answer에 계속해서 추가하여 return
느낀점
오랜만에 코테를 다시 도전하다보니 로직을 생각하는 것에서 오래걸림. 간단한 문제여도 새로운 방법을 고민하느라 시간을 잡아먹어도 되나 싶음. 코테는 제한된 시간내에 푸는 것도 중요하여 참신한 방법도 있지만 빠르게 푸는것도 고려할 것
반응형
'알고리즘' 카테고리의 다른 글
[구름톤 챌린지] Day 6 - 문자열 나누기 (0) | 2023.08.21 |
---|---|
[구름톤 챌린지] Day 5 - 이진수 정렬 (0) | 2023.08.18 |
[프로그래머스/Lv.2] 튜플_2019 카카오 개발자 겨울 인턴십 (0) | 2023.06.03 |
[프로그래머스/Lv.1] 실패율_2019 KAKAO BLIND RECRUITMENT (0) | 2023.06.03 |
[BOJ/백트래킹] N과 M (3) (0) | 2023.05.23 |