ISFJ 개발자의 이야기

백준 ACM 대회 채점 - 11531 본문

알고리즘

백준 ACM 대회 채점 - 11531

ISFJ 개발자의 이야기 2025. 6. 13. 01:07

오늘은 백준 11531문제를 풀어봤습니다.

 

문제

결과적으로는 푼 문제 수와 총 걸린시간 (패널티를 포함한)을 구하는 문제입니다.

아래의 사진과 같이 패널티는 푼 문제에 대해서만 매겨지고 문제를 맞힌 시각 + 틀린 횟수 * 20이라는 공식을 사용하면 풀 수 있는 문제입니다.

풀이

#include <iostream>
#include <cstring>

using namespace std;

int n, ans, cnt, arr[26];

void solve() {
    while (true) {
        char c;
        string s;

        cin >> n;
        if (n == -1) {
            cout << cnt << ' ' << ans;
            break;
        }

        cin >> c >> s;

        if (s == "wrong") {
            arr[c - 'A']++;
        } else if (s == "right") {
            ans += n + arr[c - 'A'] * 20;
            cnt++;
        }
    }
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);

    solve();
    return 0;
}

 

C++을 사용해서 풀었으며, 위에 나온 공식을 사용해서 코드를 써나가면 됩니다.

 

종료조건은 -1 이 입력되면 종료되므로 If문을 사용해서 조건에 맞을 시 코드가 종료되도록 구현하였습니다.

 

가장 중요한 부분인 아래의 코드에서는 s라는 변수에 값이 "wrong" 일 시 틀린 횟수를 구해야 하므로 "arr[c - 'A']++;" 을 통해 구현하였고 s라는 변수에 값이 "right" 일시 맞은 경우 이므로 ans라는 변수에 문제에서 제공해준 공식을 사용해 해당하는 문제에 주소에 대한 배열의 값의 총 걸린 시간을 저장하도록 구현하였습니다.

cin >> c >> s;

if (s == "wrong") {
    arr[c - 'A']++;
} else if (s == "right") {
    ans += n + arr[c - 'A'] * 20;
    cnt++;
}

 

 

'알고리즘' 카테고리의 다른 글

백준 Refrigerator Magnets - 4575  (0) 2025.06.13