사용언어 : C++
문제풀이
* 연속해서 답을 맞췄을 경우 한 문제당 배점이 높아진다
(1)테스트케이스 만큼 반복문 돌리기
cin >> T;
for (int i = 0; i < T; i++) {
//
}
(2) 각 문자열 길이 만큼 반복문을 돌리고, 맞았을 경우와 틀렸을 경우를 나누어 생각한다
- 맞았을 경우 : 배점을 +1하고 해당 배점을 총 점수에 더한다
- 틀렸을 경우 : 배점을 0으로 초기화 (맞았을 때 +1함)
cin >> answer; //string answer (해당 문자열)
int num = 0; int point = 0; //num:현재 점수 point:현재 배점
for (int j = 0; j < answer.size(); j++) {
if (answer[j] == 'O') { //문제를 맞았을 때
point++;
num += point;
}
else //틀렸을 때
point = 0;
전체코드
#include <iostream>
#include<string>
using namespace std;
int T; string answer;
int main() {
cin >> T;
for (int i = 0; i < T; i++) {
cin >> answer;
int num = 0; int point = 0;
for (int j = 0; j < answer.size(); j++) {
if (answer[j] == 'O') {
point++;
num += point;
}
else
point = 0;
}
cout << num << "\n";
}
}
총평
배열 관련 문제를 풀기 위해 이 문제를 풀었지만 굳이 필요하지 않은 것 같아서 사용하지 않았다. 따로 자료구조나 알고리즘을 사용하지 않고 수학적인 계산으로 충분히 작성가능한 문제
문제 출처
https://www.acmicpc.net/problem/8958
8958번: OX퀴즈
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수
www.acmicpc.net
'CodingTest > BOJ' 카테고리의 다른 글
[BOJ 2331] 백준 반복 수열 풀이 - C++ (0) | 2021.09.12 |
---|---|
[BOJ 2606] 백준 바이러스 풀이 - c++ (0) | 2021.09.12 |
[BOJ 3052] 백준 나머지 풀이 - C++ (0) | 2021.09.07 |
[BOJ 2577] 백준 숫자의 개수 풀이 - C++ (0) | 2021.09.07 |
[BOJ 2562] 백준 최댓값 풀이 - C++ (0) | 2021.09.07 |