먼저 규칙이 주어져있는데 굉장히 복잡하다.
0-1. 프레임은 총 10프레임이다.
0-2. 10프레임에 S나 P를 치면 추가기회가 있다.
1. 점수는 숫자, S, P, -로 들어온다.
2-1. S와 P를 치면 다음 기회에 얻은 점수만큼 추가점수가 있다.
2-2. 10프레임의 추가기회에는 추가점수가 주어지지 않는다.
대충 이정도만 알면 되는 것 같다.
일단 가장 처음 해야할 것은 문자를 숫자로 바꿔주기이다.
여기서 문제가 P처리인데 이전 인덱스의 점수 정보를 10에서 빼주면 쉽게 얻을 수 있
다.
def getscore(a):
if s[i] == 'S':
add = 10
#if frame < 10:
#plus.append(a+1)
#plus.append(a+2) ----------------------
elif s[a] == 'P': # ㅣ 추가점수처리
add = 10 - ad #ad는 이전 인덱스의 점수 ㅣ
#if frame < 10: ----------------------------
#plus.append(a+1)
elif s[a] == '-':
add = 0
else:
add = int(s[a])
return add
점수를 다 정수로 바꾸고 해야할 것은 스트라이크와 스페어의 추가점수 처리이다.
plus라는 리스트를 만들어 준 뒤 스트라이크나 스페어에 따라 다음 인덱스의 숫자들을 넣어준다.
그리고 현재 인덱스와 같은 숫자의 개수만큼 추가점수를 더해 준다.
def getscore(a):
if s[i] == 'S':
add = 10
if frame < 10:
plus.append(a+1) #스트라이크면
plus.append(a+2) #다음 두 번 기회에 추가점수
elif s[a] == 'P':
add = 10 - ad
if frame < 10:
plus.append(a+1) #다음 한 번 기회에 추가점수
elif s[a] == '-':
add = 0
else:
add = int(s[a])
return add
s = list(input())
#frame = 1
#stack = 0
answer = 0
plus = []
for i in range(len(s)):
ad = getscore(i)
answer += ad*(plus.count(i)+1)
하지만 10프레임의 추가 기회에서는 추가점수를 얻지 못한다.
그러므로 프레임을 계산하는 부분도 만들어야한다.
프레임이 달라지는 경우는 두 개가 있다.
1. 한 프레임에 두 번의 투구를 했을 때
2. 스트라이크를 쳤을 때
매 투구마다 두번의 투구를 했는지 스트라이크를 쳤는지 검사를 하면 된다.
for i in range(len(s)):
ad = getscore(i)
answer += ad*(plus.count(i)+1)
stack += 1 #매 투구마다 스택에 1을 더해주고
if (s[i] == 'S') | (stack == 2): #스트라이크거나 스택이 꽉 차면
stack = 0 #스택을 초기화해주고
frame += 1 #프레임을 올려준다.
정답코드
def getscore(a):
if s[i] == 'S':
add = 10
if frame < 10:
plus.append(a+1)
plus.append(a+2)
elif s[a] == 'P':
add = 10 - ad
if frame < 10:
plus.append(a+1)
elif s[a] == '-':
add = 0
else:
add = int(s[a])
return add
s = list(input())
frame = 1
stack = 0
answer = 0
plus = []
for i in range(len(s)):
ad = getscore(i)
answer += ad*(plus.count(i)+1)
stack += 1
if (s[i] == 'S') | (stack == 2):
stack = 0
frame += 1
print(answer)
티어에 맞지않게 쉬운 난이도였다.
꿀문제 짱
'백준' 카테고리의 다른 글
[C++] 백준 1441 나누어 질까 (0) | 2021.05.20 |
---|---|
[C++] 백준 21740 도도의 수학놀이 (2) | 2021.05.19 |
[파이썬] 백준 15778 Yut Nori (윷놀이) (0) | 2020.09.23 |
[파이썬] 백준 9735 삼차방정식 (4) | 2020.08.26 |