[출처 : Goorm 사이트 - 화난 튀김]
문제
문자열 한 줄이 주어졌을 때, 해당 줄에 몇 개의 영단어가 존재하는지 계산하는 프로그램을 작성하시오. 문자열은 알파벳 대/소문자 및 공백으로 구성되어 있으며, 공백 없이 하나 이상의 알파벳이 연속된 부분 문자열(Substring)을 단어(Word)로 정의한다.
예를 들어서 문자열 Goorm Edu 의 경우 두 개의 단어 Goorm, Edu가 존재한다.
입력 형식
한 줄에 공백과 알파벳을 포함하는 문자열이 주어진다. 문자열의 길이는 1글자 이상 1,000글자 이하로 주어진다.
출력 형식
입력으로 주어진 문자열에 존재하는 영단어의 개수를 정수로 출력하시오.
풀이
간단하게 생각했는데 생각보다 까다로웠다.
입력의 종료를 뜻하는 엔터키의 입력이 아스키 코드로 0 이므로 0이 검출될 때 까지 반복한다.
입력 문자의 최대 크기가 1000이므로 NULL을 포함 배열 크기 [1001]만큼 선언했다.
나의 단어 갯수 검출 방법.
n번째 배열 요소의 문자가 공백(아스키코드로 32)이 아니고(즉, 알파벳 단어 중 하나이고), n+1번째 배열 요소의 문자가 공백(32)이거나 엔터키(아스키코드로 0)일 때 카운트 +1을 해주는 방식.
(뭔가 어거지 방법 같아서.. 더 좋은 방법이 있을 것 같다.)
코드
#include <stdio.h>
#include <string.h>
int main() {
int count = 0;
int length, i=0;
char str[1001];
gets(str);
while(1){
if(str[i]==0) break;
else if((str[i] != 32) &&((str[i+1]==32)||(str[i+1] ==0))) count++; //32는 공백, 0은 엔터
i++;
}
printf("%d", count);
return 0;
}
결과
* 개인적인 학습 목적으로 작성한 글이기에 내용에 잘못된 정보가 있을 수 있습니다.
'게임 클라이언트 개발 > 알고리즘 문제' 카테고리의 다른 글
[알고리즘 2단계] 계산기 (0) | 2020.07.21 |
---|---|
[알고리즘 1단계] 369게임 (0) | 2020.07.20 |
[알고리즘 1단계] [KOI 2016] 타일 장식물 (0) | 2020.07.17 |
[알고리즘 1단계] [KOI 2019] 막대기 (0) | 2020.07.16 |
[알고리즘 1단계] 자동문 (0) | 2020.07.15 |