반응형
[문제 내용]
아래 링크로 설명을 대신한다.
https://www.acmicpc.net/problem/1152
[해답 코드 및 설명]
#include <stdio.h>
int main() {
int bc, c, wc=0;
c=getchar();
bc=c;
while((c=getchar())!='\0'&&c!='\n') {
if(c==' ')wc++;
bc=c;
}
if(bc==' ')wc--;
printf("%d", wc+1);
}
이 문제에서 가장 핵심이 되는 포인트는 띄어쓰기(공백)이다. 우리가 단어와 단어를 구분하는 기준이 띄어쓰기이므로 단어를 카운팅하기 위해서는 이 띄어쓰기(공백)의 개수를 카운트해야 하는 것이다.
위 코드에서는 getchar()로 하나하나씩 문자를 입력받아 그것이 공백인지 아닌지 체크해서 공백일 경우 wc, word count를 증가시키고 있다. 여기서 마지막 문자가 공백일 경우 word count를 빼는 데 그 이유는 문자열과 문자열 사이, 단어와 단어 사이의 공백만 카운트하기 위해서이다. 이렇게 하면 단어의 개수는 문자열 사이의 공백 개수 + 1이 되므로 wc에 1을 더해서 출력하였다.
반응형
'C, C++ > Problem Solving' 카테고리의 다른 글
[코드업 1153번] 두 수의 대소 비교 해설 (0) | 2020.11.12 |
---|---|
[코드업 1125번] 8진수 16진수 변환 해설 (0) | 2020.11.12 |
[백준BOJ 1008번] A/B 해설 (0) | 2020.11.11 |
[백준BOJ 1001번] A-B 해설 (0) | 2020.11.11 |
[백준BOJ 1000번] A+B 해설 (0) | 2020.11.10 |
댓글