단어의 개수
문제
영어 대소문자와 띄어쓰기만으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 들어가 있을까? 단 한 단어가 여러 번 들어가면 등장한 횟수만큼 모두 세어야 한다.
입력
첫 줄에는 영어 대소문자와 띄어쓰기만으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000 을 넘지 않는다. 단어는 띄어쓰기로 구분한다. 공백이 연속으로 나오는 경우는 없다. 또한 문자열 앞, 뒤에는 공백이 있을 수 있다.
출력
첫째 줄에 단어의 개수를 출력한다.
예시
입력 : The Curious Case of Benjamin Button
출력 : 6
이 문제를 접근한 방식으로는
1. 문자열에서 공백(띄어쓰기)의 개수를 받는다.
2. 공백의 수 + 1 = 단어의 개수
간단한 문제이겠거니 생각했지만 생각보다 예외처리할 문제들도 있고 나름 생각을 다시 하게 하는
문제였다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #include <stdio.h> #include <string.h> #pragma warning(disable : 4996) int main() { char *c = (char *)malloc(sizeof(char) * 1000001); gets(c); int leng = strlen(c), n = 0; for (int i = 0; i < leng; i++) { if (c[i] == ' ') { //제외할 예외처리들 (시작과 끝이 공백일 경우, 연속으로 공백이 나올 경우 if ((i != 0 && i != leng - 1) && !(c[i] == ' ' && c[i + 1] == ' ')) n++; } } //모두 공백일 경우 결과: 0 if (n == 0) printf("0\n"); else printf("%d\n", n + 1); free(c); return 0; } | cs |
더 어려운 문제들도 계속해서 공부해보고 나중엔 알고리즘 경진대회 문제들도 도전해봐야겠다.
'알고리즘 문제 풀어보기' 카테고리의 다른 글
5x5 배열에 직각삼각형 만들기 (0) | 2019.01.30 |
---|---|
최대공약수, 최소공배수 구하기 알고리즘(+약수 구하기) (0) | 2019.01.26 |
[백준 1475] 방 번호 문제 (0) | 2019.01.24 |
[백준 8958번] OX퀴즈 (0) | 2019.01.24 |
[백준 1914번] 하노이 탑 문제 (0) | 2019.01.19 |