취업/TIL

20231109_점수계산_[Python알고리즘]

개발자 덕구🐾 2023. 11. 10. 01:59
728x90

 

 

수진 아가씨 컴백한대요...

 

 

오늘도 역시 자기 전 김태원 파이썬 알고리즘 문제를 풀었다. 

드디어 섹션2의 모든 문제가 끝났다.

포기하지말고 섹션8까지 열심히 듣자. 

 

 


 

 

 

내가 푼 풀이 : 

if __name__=="__main__" :
    n = int(input())
    arr = list(map(int,input().split()))
    arr2 = [0]*n
    
    for idx, val in enumerate(arr) :
        if val == 1 : # O인 상황 
            if idx == 0 : # 첫번째 문제라면 무조건 1점
                arr2[0] =1   
            else :  # 첫번째 문제가 아니라면 
                arr2[idx] = arr2[idx-1]+1 
        else : 
            continue 
    print(sum(arr2))

이 풀이를 만들고 생각보다 간단하게 만들었다라고 생각했다.

강사님의 풀이는 어떨지 기대가 되었다.

 

 

근데 정말 강사님을 더 간단하게 풀이하셨다.

 

 

강사님의 코드 : 

if __name__=="__main__" :
    n = int(input())
    arr = list(map(int,input().split()))
    
    sum = 0
    cnt =0 
    for x in arr :
        if x == 1 : 
            cnt +=1 
            sum += cnt 
        else : cnt = 0 
    print(sum)

 

 

정말 대단하시다! 

 

 

내 코드에서는 arr2라는 리스트를 생성하여 더해지는 점수들을 index별로 저장하였다. 

하지만 이 코드에서는 그런것 없이 

점수가 발생할 때마다 sum에 더해주었다.

 

 

더해지는 수는 cnt로 1이 있을 때마다 1씩 증가한다.

0이 나와서 리셋되는 경우는 cnt=0을 이용해 리셋해준다.

 

 

그렇게 해서 나오는 sum을 출력해주면 된다. 

 

반응형