본문 바로가기

문제풀이/C 문제풀이

1152

1152

1152번 문제
#include 
#include  // isalpha 함수

int main(void) {
	int i = 0, a = 0, b = 0, c;//개수를 셀 i와 문자 3개

	while ((c = getchar())!='\n') { // 문자를 하나하나 받음
		if (isalpha(a) && b == 32 && isalpha(c)) // 첫 번째 문자가 영문자이고 두 번째 문자가 공백이며 세 번째 문자가 영문자일 경우
			++i;
		a = b; b = c;//  문자 갱신
	}
	printf("%d", i+1); // 결국 문자 사이에 있는 공백을 세는 것과 같으므로 1을 더해야 함
}

결과

1152.png

단어의 개수를 세는 문제이기 때문에 처음에는 공백과 단어가 차례로 나올 때만 개수를 세려고 했다. 그러면 공백이 맨 앞과 뒤에도 나올 수도 있고 나오지 않을 수도 있기 때문에 개수가 맞지 않을 때가 있었다. 그래서 완전히 단어 사이가 공백일때만 센다면 언제나 단어 개수보다 하나 적은 수가 나올 것이므로 a,b,c를 각각 비교하고 마지막에 1을 더하기로 하였다.

'문제풀이 > C 문제풀이' 카테고리의 다른 글

2920 + getchar + 배열 비교  (0) 2019.02.28
8958 + sizeof/strlen +char/int형 선언  (0) 2019.02.28
2577  (0) 2019.02.24
2941  (0) 2019.02.17
5622  (0) 2019.02.16