백준C (문자열)

쿵ㅇ양·2023년 12월 30일

알고리즘

목록 보기
16/18

백준 1152-단어의 개수

입력 받는 문자열이 "공백"으로 이루어진 문자열이어서 당황스러웠던!!

영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.

중요!! 입력 받는 문자열이 공백 포함이라면?? 어떻게 입력 받아야할까??

scanf("%[^\n]s", str);

scanf 사용 시 [^\n] 추가 :
공백을 포함해서, Enter값이 들어오기 전까지 입력을 받겠다

응용

scanf("%[abc]", str);

:a나 b나 c 문자 "이외의 값"이 나오기 전까지 입력을 받겠다.

#include<stdio.h>
#include<string.h>

int main(){
    char str[1000000];
    
    scanf("%[^\n]s", str);
    
    int count = 0;
    int i = 0;
    int num;
    num = strlen(str);
    while(str[i]){
        if (str[i] == ' '){
            count = count + 1;
        }
        i++;
    }
    if(str[0] == ' ')
        count = count - 1;
    if (str[num -1] == ' ')
        count = count - 1;
    printf("%d", count+1);
    
    return 0;
}
profile
개발을 공부하고 있는 대학생

0개의 댓글