코딩하는 베어브릭

구현 문제 #10. 점수 계산 본문

알고리즘/인프런: 파이썬 알고리즘 문제풀이

구현 문제 #10. 점수 계산

bearbrick 2022. 5. 16. 19:23

*이 풀이는 인프런: 파이썬 알고리즘 문제풀이 강좌에 기반하였습니다.

 

 

 

내 풀이

 

1. 문제에 대한 점수를 계산하기 위해서는 이전 점수가 필요하기 때문에 score배열을 생성해서 이전 점수에 접근할 수 있도록 하고, score[0]의 값을 먼저 처리한다.

2. 현재 채점결과가 1인데 이전 채점결과가 0인 경우와 이전 채점결과가 1인 경우로 나누어서 경우를 처리한다. 

 

import sys
#sys.stdin=open("input.txt","rt")

n = int(input())
arr= list(map(int, input().split()))
score=[0]*n

if arr[0]==1:
    score[0]=1

for i in range(n):
    if arr[i-1]==0 and arr[i]==1:
        score[i]=1
    elif arr[i-1]==1 and arr[i]==1:
        score[i]=score[i-1]+1

print(sum(score))

 

 

 

강사님 풀이

 

import sys
sys.stdin=open("input.txt","rt")

n = int(input())
a= list(map(int, input().split()))

sum=0
cnt=0 #가중치

for x in a:
    if x==1:
        cnt+=1
        sum+=cnt
    else:
        cnt=0
print(sum)

 

 

 

배운 점

 

1. 문제에 현재 계산 값이 이전의 결과에 영향을 받아 어떻게 변화하는 지 나와있다면, 가중치를 두어 계산한다.

Comments