코딩하는 베어브릭
구현 문제 #10. 점수 계산 본문
*이 풀이는 인프런: 파이썬 알고리즘 문제풀이 강좌에 기반하였습니다.
내 풀이
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. 문제에 현재 계산 값이 이전의 결과에 영향을 받아 어떻게 변화하는 지 나와있다면, 가중치를 두어 계산한다.
'알고리즘 > 인프런: 파이썬 알고리즘 문제풀이' 카테고리의 다른 글
| 탐색&시뮬레이션 문제 #2. 숫자만 추출 (0) | 2022.05.27 |
|---|---|
| 탐색&시뮬레이션 문제 #1. 회문 문자열 검사 (0) | 2022.05.27 |
| 구현 문제 #9. 주사위 게임 (0) | 2022.05.16 |
| 구현 문제 #8. 뒤집은 소수 (0) | 2022.05.16 |
| 구현 문제 #7. 소수 (에라토스테네스 체) (0) | 2022.05.16 |
Comments