출처 : 반크_세계유산 창덕궁
문제]
영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.
입력
첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열은 공백으로 시작하거나 끝날 수 있다.
출력
첫째 줄에 단어의 개수를 출력한다.
예제 입력 1
The Curious Case of Benjamin Button
예제 출력 1
6
예제 입력 2
The first character is a blank
예제 출력 2
6
예제 입력 3
The last character is a blank
예제 출력 3
6
출처 : 백준_1152번
참고풀이]
#include <stdio.h>
#include <string.h> //strlen():문자열의 문자개수 구하는 함수
int main()
{
char Str[1000000] = {'\0'}; //입력되는 문자열 저장할 배열변수
int count = 0;//단어의 개수를 세는 변수
int i;//인덱스 또는 반복변수
int start;//문자열의 카운트 시작할 곳 지정변수
//문자열을 입력받는다.
gets(Str);
if(strlen(Str) <= 1000000)
{
//입력된 문자열 만큼 반복하면서 단어의 개수를 구한다.
//입력된 문자열의 첫 문자가 빈칸인지를 체크한다.
start = (Str[0] == ' ') ? 1 : 0;
for(i = start;i < strlen(Str);i++)
if(Str[i] == ' ') count++;
//입력된 문자열의 끝 문자가 빈칸이 아니면 단어수를 센다.
if(Str[strlen(Str)-1] != ' ') count++;
//결과출력
printf("%d",count);
}
return 0;
}
참고풀이 결과]
대한민국의 아름다운 영토, 독도의 가을
'프로그램 > C언어 1000제' 카테고리의 다른 글
C언어 162제] 2011년 ICPC 북아메리카 뉴욕지역예선 A번 문자열 반복 (0) | 2024.09.11 |
---|---|
C언어 161제] 2006년 한국정보올림피아드 지역본선 초등부 2번 숫자의 개수 (0) | 2024.09.10 |
C언어 159제] 동적메모리를 활용한 최대값, 최소값 구하기 (1) | 2024.09.09 |
C언어 158제] 2014년 ICPC 대전지역예선 ACM 호텔 (1) | 2024.09.05 |
C언어 157제] 2010년 한국정보올림피아드 지역본선 초등부 2번 주사위 게임 (0) | 2024.08.16 |
댓글