알고리즘/백준
[C++] 백준 8958번 - OX퀴즈
Esunn
2022. 7. 27. 02:00
https://www.acmicpc.net/problem/8958
테스트 케이스의 수가 주어지고 그 수만큼 OX답이 나온다.
문제를 연속으로 맞은 만큼 연속된 O개수만큼 점수를 얻는다.
예를 들어 OOOXXOXOO 라면은
처음에 O가 3개 연속되니 1 + 2 + 3 이런 식으로 계산된다.
#include <iostream>
#include <string>
using namespace std;
int main() {
int t;
int len = 0;
int combo = 0;
int score = 0;
string ox;
cin >> t;
for (int i = 0; i < t; i++) {
cin >> ox;
len = ox.length();
for (int j = 0; j < len; j++) {
if (ox[j] == 'O' && combo > 0) {
combo++;
score += combo;
}
else if (ox[j] == 'O') {
combo++;
score++;
}
if (ox[j] == 'X') combo = 0;
}
cout << score << "\n";
score = 0;
combo = 0;
}
}
먼저 테스트 케이스를 받아주고 그 수만큼 for문을 돌려준다.
문자열을 받고 길이를 확인한 다음 문자열 배열의 각각의 요소를 확인한다.
combo라는 변수를 만들어 연속된 정도를 알 수 있게 해 주었다.
다른 효율적인 풀이도 있겠지만 개인적으로 나쁘지 않게 푼 문제 중 하나이다.
다른 글도 참고 안 하고 풀었고 구현도 내 생각에서는 나쁘지 않았다.