문제
풀이
이 문제의 경우 80보다 작은 문자열을 입력받고 그 중에서 연속된 O의 점수만큼 채점을 하여 점수가 몇 점인지 출력하는 문제입니다.
여기서 연속된 O의 점수라는 것은 연속된 개수에 따라 점수가 늘어나는 것을 의미합니다. 예를들어 O 이면 1점, OO이면 1+2가되어 3점, OOO면 1+2+3=6점이 되는 것입니다. 예를 들어 OOXOXXOOO라는 문자열이 있을 경우 이 문자열에 대한 채점을 진행하면 (1+2) + 1 + (1+2+3) 이기 때문에 점수는 10점이 됩니다.
이 점을 생각하여 문제 해결 순서를 정리하면 다음과 같습니다.
1. 80이하의 문자열을 입력받습니다.
2. 반복문을 이용하여 문자열의 길이만큼 탐색해줍니다.
3. 탐색 과정에서 O를 만날 경우 O에 대한 점수를 1점 올려주고, 올린 값을 총점에 더해줍니다.
4. 도출된 총점을 출력하고, 변수를 초기화 시킵니다.
5. 위 과정을 테스트 케이스 수만큼 반복합니다.
소스코드
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
int main()
{
int n,total=0,count=0;
cin >>n;
char array[80], value[n];
for (int i = 0; i < n; i++)
{
total=0, count=0;
cin >> array;
for (int j = 0; j < strlen(array) ; j++)
{
if(array[j]=='O') {
count ++;
total +=count;
}else count=0;
}
cout << total << '\n';
}
}
'Algorithm > Python, C++' 카테고리의 다른 글
백준 1065_한수[C++] (0) | 2022.01.19 |
---|---|
백준 10818_최소, 최대[C++] (0) | 2022.01.19 |
백준 4344_평균은 넘겠지[C++] (0) | 2022.01.17 |
백준 3052_나머지[C++] (0) | 2022.01.17 |
백준 2577_숫자의 개수[C++] (0) | 2022.01.17 |
댓글