2022.12.26 Baekjoon1152

조진호·2022년 12월 27일
0

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

백준 1152번 문제를 풀면서 문자열에 관해 더 많은 것을 알았다.
입력을 받을 때 사용되는 scanf 함수는 공백을 문자열 끝으로 인식하여 공백이 있는 문자를 입력 받을 때는 사용이 불가하다.
그렇다면 공백이 있는 문자열은 어떤 함수를 받아야 할까?
공백이 있는 문자열을 받는 방법은 크게 두 가지가 있다.

1. scanf("%[^\n]", str)

scanf에서 [^문자]는 해당 문자가 나오기 전까지 모든 문자열을 받겠다는 뜻이다.

2. char * fgets(char * str, int num, FILE * pFile)

함수 이름인 fgets는 file + get + string을 합친 이름으로, 파일로부터 문자열을 가지고 온다는 뜻이다. 단, fgets 함수는 scanf와 달리 공백을 포함하여 문자열을 입력 받는다.

코드 #1

#include <stdio.h>

int main(void) {
    char array[1000001];
    int cnt = 0;

    scanf("%[^\n]", array);
    
    if(array[0] != ' ') {
        cnt++;
    }
    
    int i = 0;
    while(array[i]) {
        if(array[i] == ' ') {
            cnt++;
        }
        i++;
    }

    if(array[i-1] == ' '){
        cnt--;
    }

    printf("%d", cnt);
}
profile
코린이

0개의 댓글

관련 채용 정보