728x90
문제
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.
"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.
OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 0보다 크고 80보다 작은 문자열이 주어진다. 문자열은 O와 X만으로 이루어져 있다.
출력
각 테스트 케이스마다 점수를 출력한다.
1. 풀이
1) 문자열에서 O의 횟수만큼 카운터를 따로 해주자.
2) 출력으로는 카운터 값을 더해서 출력하자.
2. 코드 소스
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #include<iostream> #include<string> int main() { //입력 int test; std::cin>>test; std::string input[test]; int ret[test]={0,}; //출력을 할 ret값은 배열로 생성해 따로 저장해준다. for(int t=0;t<test;t++){ std::cin>>input[t]; //입력을 받자. int count(0); //카운터를 따로 돌려준다. for(int i=0;i<input[t].size();i++){ if(input[t][i]=='O'){ count++; ret[t] += count; //카운터 값을 ret값에 저장! } else if(input[t][i]=='X') count = 0; //만일 이번 문자가 'X'라면, count 초기화! } } //출력 for(int t=0;t<test;t++){ std::cout<<ret[t]<<"\n"; } } | cs |
3. 문제 링크
https://www.acmicpc.net/problem/8958
4. 참고
'<백준> > |c++| easy' 카테고리의 다른 글
백준 2675 - 문자열 반복 (0) | 2019.02.16 |
---|---|
백준 10809 - 알파벳 찾기(ascii 변환) (0) | 2019.02.10 |
백준 2920 - 음계 (0) | 2019.02.10 |
백준 2577 - 숫자의 개수(문자열 길이 반환) (0) | 2019.02.10 |
백준 1152 - 단어의 개수(문자열 토크나이징) (0) | 2019.02.10 |