C로 구현한 1152번 단어의 개수 구하기 문제 풀이입니다.
https://www.acmicpc.net/problem/1152
#include <stdio.h>
#include <string.h>
int main() {
char input[1000001];
scanf("%[^\n]", input);
int len = strlen(input), count=0;
if(len == 1 && input[0] == ' '){
printf("0");
return 0;
}
for(int i=1; i<len-1; i++) {
if(input[i] == ' ')
count++;
}
printf("%d", count+1);
}
문자열을 입력받아 길이를 구해 정수형 변수 len에 저장합니다. 문자열 길이가 1이고 배열의 첫번째 값이 공백일 경우
0을 출력하고 종료하도록 합니다. 조건을 모두 만족하지 않을 경우 for문으로 넘어가게 되고 문자열의 처음과 끝에
공백이 들어올 수 있기 때문에 1부터 문자열 길이-1만큼 반복문을 수행합니다. 이 반복문은 공백의 갯수를 세어주는데,
배열 각 자리의 값이 공백일 경우 정수형 변수 count를 1씩 증가시켜줍니다.
단어의 개수는 공백+1개이기 때문에 최종적으로 count에 +1 한 값을 출력할 수 있도록 해줍니다.
(ex. 'Hello World Hi' : 공백 2개, 단어 3개)
[참고] '%[^\n]' : \n가 나올때까지 공백을 포함하여 읽는다.
[소감]
문제를 해결하는 아이디어는 있었으나 어떻게 공백을 포함하여 입력받을 수 있을까라는 의문이 생겼다.
다른 분들의 입력방식을 참고하고 %[^\n]가 어떤 기능인지 학습하여 적용시켰다. 이러한 학습을 통해 지식의 폭을
좀 더 넓힐 수 있어 뭔가 뿌듯한거 같다!
'백준(C언어) 풀이 > 문자열' 카테고리의 다른 글
백준(C) 5622번 다이얼 풀이 (0) | 2021.07.14 |
---|---|
백준(C) 2908번 상수 풀이 (0) | 2021.07.14 |
백준(C) 1157번 단어 공부 풀이 (0) | 2021.07.14 |
백준(C) 2675번 문자열 반복 풀이 (0) | 2021.07.14 |
백준(C) 10809번 알파벳 찾기 풀이 (0) | 2021.07.14 |