백준 알고리즘 1152번
단어의 개수
문제풀이
1. 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다 - 길이 1000001
2. 문자열을 검사하면서 만약에 띄어쓰기를 만나면? wordcnt 변수 ++
라고 간단한 줄 알았으나
(두가지를 더 생각했었어야하는 문제였다.)
두가지 케이스는
- 첫번째에 공백이 들어올 경우
- 가장 마지막에 공백이 들어오거나 공백 두개가 연달아 들어오는 경우
그 부분을 예외처리했다
- 가장 마지막에 공백이 들어오거나 공백 두개가 연달아 들어오는 경우
- 이렇게 해도 문제가 해결되지 않았다. 이유를 찾아보니 fgets 등등 여러가지 다른 입력함수를 사용하니 해결되는 거 같았지만 먼 개소린지 모르겠어서 scanf 에서 사용할 수 있는 법을 찾았다.
(절 이해시켜주셔서 감사합니다..)
- 이렇기 때문에 scanf("%[^\n]", str); 라고 입력을 받았다 ( 익숙해지려면 꽤 걸리겠군 )
42서울 때매 scanf, printf에서 멀어지고 write 함수로만 구현해봐서 생각해보지 못한 부분이었다!
- wordcnt 출력
#include <stdio.h>
#include<string.h>
int main(void)
{
char str[1000001];
int wordcnt = 1;
scanf ("%[^\n]", str); //맘에 안 들지만 사용해야함
for(int i =0; i< strlen(str); i++)
{
if (str[i] == ' ')
wordcnt++;
}
if(str[0] == ' ')
wordcnt--; //첫번째 예외 - 첫번째 단어가 공백일 때 wordcnt 하나 감소
if(str[strlen(str)-1] == ' ')
wordcnt--; //두번째 예외 - 마지막 단어가 공백일 때 wordcnt 하나 감소
printf("%d", wordcnt);
return 0;
}
Author And Source
이 문제에 관하여(백준 알고리즘 1152번), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@spolice/백준-알고리즘-1152번저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)