문제 바로가기
https://www.acmicpc.net/problem/8958


관련 알고리즘
- 해당 없
정답 및 해설
OX퀴즈를 컨셉으로 점수를 계산하는 문제이다.
문제를 간단히 요약하자면 리듬게임이나 격투게임을 할 때 '콤보'를 세어 점수를 계산해야 한다.
연속해서 맞춘 문제의 개수(콤보)를 저장할 변수를 만들고 콤보 수만큼 총점에 더하여 간단히 해결한다.
다만, 이 문제에서는 테스트 케이스(통칭 T)가 한 번의 실행에 여러 개 주어진다.
각 테스트케이스 실행 시마다 관련된 변수를 초기화해야 한다는 점에 유의하자.
C++
더보기
#include<bits/stdc++.h>
using namespace std;
int main(){
int T,tot,combo;
string S;
cin>>T;
while(T--){
combo=0,tot=0;
cin>>S;
for(char res : S){
if(res=='O')
combo++;
else if(res=='X')
combo=0;
tot+=combo;
}
cout<<tot<<'\n';
}
}
| Line | 해설 |
| 4~5 | 문제 풀이에 사용할 변수를 정의한다. int T : 테스트케이스의 개수 int tot : 해당 테스트케이스의 최종 점수 int combo : 연속으로 맞춘 문제의 개수 string S : 해당 테스트케이스의 OX결과 문자열. "OOXXOXXOOO" 와 같이 입력됨 |
| 6~7 | 테스트케이스의 개수(T)를 입력받고 while(T--) 문으로 테스트케이스만큼 풀이를 반복한다. |
| 8 | 위에서 언급했던 것처럼 테스트케이스를 새로 입력받을 때마다 관련된 변수를 초기화해주어야한다. |
| 9~16 | OX결과표를 문자열 S에 입력받고 for-each 구문으로 결과표의 문자하나하나씩 검사하며 점수를 계산한다. 이번 퀴즈 결과(res)가 'O'이면 combo 변수를 1 증가시키고, 'X'이면 콤보를 초기화한다. 그 후 최종 점수(tot)에 현재 콤보만큼 점수를 더해주어 최종 점수를 구한다. |
| 17 | 점수를 출력하고 다음 테스트케이스의 정답출력을 위해 줄바꿈을 해주어야한다. |
'Coding > BOJ' 카테고리의 다른 글
| [BOJ 백준] 10809 - 알파벳 찾기 (C++) (0) | 2023.11.12 |
|---|---|
| [BOJ 백준] 10250 - ACM 호텔 (C++ / Python) (1) | 2023.11.11 |
| [BOJ 백준] 3052 - 나머지 (C++ / Python) (1) | 2023.11.09 |
| [BOJ 백준] 2920 - 음계 (C++) (1) | 2023.11.09 |
| [BOJ 백준] 2884 - 알람 시계 (C++) (0) | 2023.11.07 |