본문 바로가기
알고리즘/BOJ(C++)

[BOJ 알고리즘] 1152 "단어의 개수"

by frog 2021. 5. 12.

[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

댓글