알고리즘

[BOJ 17215] 볼링 점수 계산

dldyou 2024. 3. 26. 20:41

볼링을 몇 번 쳐서 규칙을 아는 사람이라면 규칙대로 구현만 하면 되는 문제이다. 규칙을 모른다면 살짝 헷갈릴 수 있다. 

 

구현할 때, 헷갈리지 않게 먼저 점수판을 만들어 준 후에 계산을 진행하였다. 

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