[백준] 8958번 OX퀴즈

[백준] 8958번 OX퀴즈

출처: [백준] 8958번 OX퀴즈


문제

“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
2
3
4
5
6
5
OOXXOXXOOO
OOXXOOXXOO
OXOXOXOXOXOXOX
OOOOOOOOOO
OOOOXOOOOXOOOOX

예제 출력 1 복사

1
2
3
4
5
10
9
7
55
30

출처

ACM-ICPC > Regionals > Asia > Korea > Asia Regional - Seoul 2005 A번

  • 문제를 번역한 사람: baekjoon
  • 문제의 오타를 찾은 사람: jh82582

링크


풀이



소스코드

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
29
30
31
32
#include <iostream>
#include <cstring>
using namespace std;

int main(void)
{
char str[100];
int number = 0, result =0, flag=1;

cin >> number;

for (int i=0; i<number; i++){
cin >> str;
int length = strlen(str); // str의 길이를 미리 계산하여 loop문에서 계속 계산되는 것을 방지?

for(int j=0; j<length; j++){
if (str[j] == 'O'){ // O일 때 결과값 flag만큼 증가
result+=flag;
flag++;
}
else{ // X일 때 flag 1로 초기화
flag=1;
}
}

cout << result << endl;
result =0;
flag =1;
}

return 0;
}
[백준] 1152번 단어의 개수

[백준] 1152번 단어의 개수

출처: [백준] 1152번 단어의 개수


문제

영어 대소문자와 띄어쓰기만으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.


입력

첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열의 앞과 뒤에는 공백이 있을 수도 있다.


출력

첫째 줄에 단어의 개수를 출력한다.


예제 입력 1

1
The Curious Case of Benjamin Button

예제 출력 1

1
6

예제 입력 2

1
Mazatneunde Wae Teullyeoyo

예제 출력 2

1
3

예제 입력 3

1
Teullinika Teullyeotzi

예제 출력 3 복사

1
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
#include <iostream>
#include <string>

using namespace std;
using std::string;

int main()
{
string str={};
int wordCnt=0; // 단어 갯수

getline(cin,str);

for(int i=0; i<str.length(); i++) {
if(str[i] == ' ')
wordCnt++;
}

if(str.at(0) == ' ')
wordCnt--;

if(str.at(str.length()-1)==' ')
wordCnt--;

cout << wordCnt+1;
return 0;
}