볼링을 몇 번 쳐서 규칙을 아는 사람이라면 규칙대로 구현만 하면 되는 문제이다. 규칙을 모른다면 살짝 헷갈릴 수 있다.
구현할 때, 헷갈리지 않게 먼저 점수판을 만들어 준 후에 계산을 진행하였다.
string s;
int frame[11][3];
int main(void) {
fastio;
cin >> s;
int f = 1, cnt = 0, score = 0;
for (int i = 0; i < s.length(); i++) {
if (s[i] == '-') frame[f][cnt++] = 0;
else if (s[i] == 'S') {
frame[f][cnt++] = 10;
f++, cnt = 0;
}
else if (s[i] == 'P') {
frame[f][cnt++] = 10 - frame[f][cnt - 1];
f++, cnt = 0;
}
else frame[f][cnt++] = s[i] - '0';
if (cnt == 2) f++, cnt = 0;
}
for (int i = 1; i <= 9; i++) {
if (frame[i][0] == 10) {
if (frame[i + 1][0] == 10) {
score += 10 + 10 + frame[i + 2][0];
}
else score += 10 + frame[i + 1][0] + frame[i + 1][1];
}
else if (frame[i][0] + frame[i][1] == 10) {
score += 10 + frame[i + 1][0];
}
else {
score += frame[i][0] + frame[i][1];
}
}
score += frame[10][0] + frame[10][1] + frame[11][0] + frame[11][1] + frame[12][0];
cout << score;
return 0;
}
'알고리즘' 카테고리의 다른 글
[BOJ 20310] 타노스 (0) | 2024.03.26 |
---|---|
[BOJ 4900] 7 더하기 (0) | 2024.03.26 |
[BOJ 2806] DNA 발견 (0) | 2024.03.25 |
[BOJ 27966] △ (0) | 2024.03.25 |
[BOJ 26008] 해시 해킹 (1) | 2024.03.24 |