Small Step

[C++] 백준 1152번 - 단어의 개수 본문

알고리즘/백준

[C++] 백준 1152번 - 단어의 개수

Esunn 2022. 7. 25. 02:34

https://www.acmicpc.net/problem/1152

 

1152번: 단어의 개수

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

www.acmicpc.net

 

 

주어진 문자열에서 단어의 개수를 세는 문제이다.

문자열의 앞뒤에 공백이 올 수 있고 단어는 공백 하나로만 구별되는 게 특징이다.

 

공백이 있는 문자열 받기

C++에서는 cin을 통해 문자열을 받게 되면 공백이 발생한 곳에서 입력을 마치게 된다.

이를 방지하기 위해서 getline()이라는 함수를 사용했다.

 

참고한 블로그

https://cryptosalamander.tistory.com/136?category=1091333 

 

[C++ / STL] String 공백 포함 입력 받는 방법

String 공백 포함 입력 받는 방법 string과 char[] 자료형 모두 공백이 포함된 입력을 받았을 때, 공백을 기준으로 다른 인자라고 판단하여, 공백 문자가 나오기 이전까지의 문자들만 입력이 되는 문

cryptosalamander.tistory.com

 

단어  개수 세기

공백이 하나도 없을 경우를 생각해 1로 기본값을 설정하고 문자열의 길이를 알아내 비교한다.

처음부터 끝까지 쭉 비교하고 마지막에 처음이나 끝에 있는 공백의 수를 없애 준다.

 

#include <iostream>
#include <string>
using namespace std;

int main() {
	int cnt = 1;
	string str;
	
	getline(cin, str);
	int len = str.length();

	for (int i = 0; i < len; i++) {
		
		if ( str[i] == ' ' ) {
			cnt++;
		}
	}

	if (str[0] == ' ') cnt--;
	if (str[len - 1] == ' ') cnt--;

	cout << cnt;
}

 


문제를 푸는데 이유를 모르겠는데 오류가 나길래 ' '와 " "  차이 때문이었다.

이에 대해 정리해놨다.

 

https://pino43.tistory.com/56

 

[C, C++] 작은 따옴표와 큰따옴표의 차이는?

C(C++)에서는 작은 따옴표 ' ' 와 큰 따옴표 " " 의 의미가 다르다. 작은 따옴표는 문자일때 사용해야하고 큰 따옴표는 문자열일때 사용해야 한다. https://www.acmicpc.net/problem/1152 1152번: 단어의 개수 첫

pino43.tistory.com

 

Comments