알고리즘
백준 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++;
}