반응형
https://www.acmicpc.net/problem/1152
1152번: 단어의 개수
첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한
www.acmicpc.net
[문제 풀이]
1. scanf("%[^\n]", a)을 사용하여 엔터키 빼고 띄어쓰기는 공백으로 입력받는다.
(안에 있는 문자가 끝날때까지 입력을 받는다.
즉 \n를 받을 때 까지 입력을 받으므로 공백을 포함하여 입력을 받는다.)
2. strlen을 이용하여 문자열의 길이를 구한다.
3. 문자열의 길이가 1이고 처음이 공백이면 0을 출력한다.
4. 만약 문자열앞에 공백이 있으면 이것을 단어로 포함시키지 않는다.
5. 공백+1 만큼 출력을 한다.
#include <stdio.h>
#include <string.h>
#define _CRT_SECURE_NO_WARNINGS
int main()
{
char a[1000000];
scanf("%[^\n]", a);
int len;
len=strlen(a);
int cnt = 0;
if (len == 1)
{
if (a[0] == ' ')
{
printf("0\n");
return 0;
}
}
for (int i = 1; i < len - 1; i++)
{
if (a[i] == ' ')
{
cnt++;
}
}
printf("%d\n", cnt + 1);
return 0;
}
|
cs |
모르고 있어서 문제를 푸는데 힘들었다.
공백을 처리하는 방법에 대해서 배우는 좋은 문제였다.
'Baekjoon Online' 카테고리의 다른 글
[1978]: 소수 찾기 (0) | 2021.07.05 |
---|---|
[10872번]: 팩토리얼 (0) | 2021.07.05 |
[2839번]: 설탕 배달 (0) | 2021.07.03 |
[1110번]: 더하기 사이클 (0) | 2021.07.03 |
[4344번]: 평균은 넘겠지 (0) | 2021.06.26 |