[BOJ 알고리즘] 1152 "단어의 개수"
● 문제
- 영어 대소문자와 띄어쓰기만으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.
● 소스코드
#include <stdio.h>
#include <string.h>
using namespace std;
int main() {
char str[1000001] = {};
scanf("%[^\n]s",str);
int answer = 0;
int len = strlen(str);
if(len == 1 && str[0] == ' ')
{
answer = 0;
}
for(int i=0; i<len; i++)
{
if(str[i] == ' ')
{
if(i == 0)
{
continue;
}
answer++;
}
if(i == len - 1)
{
if(str[i] != ' ')
{
answer++;
}
}
}
printf("%d\n",answer);
return 0;
}
● 풀이
- 특별한 알고리즘은 없다.
- 줄바꿈 문자가 나올때까지 문자열을 입력 받는다.
- 맨 앞의 공백을 제외하면 공백의 수가 단어의 갯수이다. 단, 문자열의 마지막 문자가 공백이 아닐시 단어가 한 개 더 있다.
* www.acmicpc.net/problem/1152
1152번: 단어의 개수
첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한
www.acmicpc.net
'알고리즘 > BOJ(C++)' 카테고리의 다른 글
[BOJ 알고리즘] 1330 "두 수 비교하기" (0) | 2021.05.16 |
---|---|
[BOJ 알고리즘] 1157 "단어 공부" (0) | 2021.05.12 |
[BOJ 알고리즘] 1008 "A/B" (0) | 2021.05.12 |
[BOJ 알고리즘] 1001 "A-B" (0) | 2021.05.12 |
[BOJ 알고리즘] 1000 "A+B" (0) | 2021.05.12 |
댓글