ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [구름톤 챌린지] Day4 완벽한 햄버거 만들기
    코딩 챌린지 2023. 8. 18. 20:12
    # -*- coding: utf-8 -*-
    # UTF-8 encoding when using korean
    N = int(input())
    k = list(map(int, input().split()))
    
    isPerfect = True
    
    if k[0] == max(k):
    	for i in range(N-1):
    		if k[i] < k[i + 1]:
    			isPerfect = False
    elif k[-1] == max(k):
    	for i in range(N-1):
    		if k[i] > k[i + 1]:
    			isPerfect = False
    else:
    	for i in range(N-1):
    		if i < k.index(max(k)):
    			if k[i] > k[i+1]:
    				isPerfect = False
    		else:
    			if k[i] < k[i+1]:
    				isPerfect = False
    
    			
    if isPerfect == True:
    	print(sum(k))
    else:
    	print(0)

    내가 최종적으로 작성한 코드이다. 점점 커지기만 하거나 (1, 2, 3, 4, 5) 아니면 점점 작아지기만 하는 배열 (5, 4, 3, 2, 1)을 if문으로 예외처리 해주고 일반적인 배열(1, 2, 4, 7, 6, 5, 3, 1)을 처리해 줄 수 있도록 작성했다. 배열 내의 가장 큰 수를 기준으로 왼쪽 오른쪽으로 나누어 두 수를 비교할 수 있도록 코드를 작성했다. 

     

    이 코드를 만들기 전에 시행착오가 있었다. 처음 코드를 작성했을 때는 점점 커지기만 하거나 점점 작아지기만 하는 코드를 처리해주지 못해 테스트케이스들을 통과 못했었다. 

    for... in range... 는 index가 0부터 시작한다는 것도 알게 되었다. 

     

    이번에 배운 것은 디버깅의 중요성이였다. 그냥 머릿속으로 돌아갈 것 같은 코드를 생각해서 작성했더니 많은 오류가 발생했었다. 그래서 print()를 이용해 각 조건과 for 문이 사용될 때마다 특정 문자가 print 되게 만들었더니 코드가 어떻게 실행되는지 테스트해 보기 편했다. 그리고 기능을 차례차례 구현해 나가니 오류를 디버깅하기도 훨씬 쉬웠다. 다음부터는 한 조각씩 코드룰 작성하고 테스트하고 또 기능 추가하는 식으로 문제를 해결해 나가야겠다. 

     

    밑에 코드는 내가 처음 작성했다가 테스트케이스에서 오류가 발생해 사용하지 않은 코드이다.

    N = int(input())
    k = list(map(int, input().split()))
    
    isPerfect = True
    
    
    for i in range(N // 2):
    	if k[i + 1] < k[i]:
    		isPerfect = False
    
    for i in range(N // 2):
    	if k[-i] > k[-i -1]:
    		isPerfect = False
    		
    
    if isPerfect == True:
    	print(sum(k))
    else:
    	print(0)
    for i in range(k.index(max(k))):
    	if k[i] < k[i-1]:
    		isPerfect = False
    
    for i in range(len(k) - k.index(max(k) - 1)):
    	if k[-i] > k[-i -1]:
    		isPerfect = False
Designed by Tistory.