개발자/C or C++

[백준] 1152번

Mosser 2021. 10. 1.
728x90
반응형

문제

해결 방법

 

이 문제는 문자열을 입력받고 입력받은 문자열에서 문자의 개수를 구하는 문제입니다.

문자의 기준은 공백으로 나뉘어져있고, 공백이 연속으로 있을수는 없습니다.

문자열의 처음과 끝에 공백이 있는경우에도 예외처리를 해주어야하고 공백 한개만 입력받아도 예외처리 해줘야합니다.

 

 

 

소스코드

 

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

int main(){
	char str[1000001];
	scanf("%[^\n]",&str);   //즉 \n 문자를 빼고 모든 문자를 입력받는 함수입니다. 공백포함입니다. 즉 공백포함한 모든 문자열을 입력받습니다.

	
	int i=0;
	int len=strlen(str);   //문자여르이 길이 구하기
	int count=0;
	int flag=0;
	for(i=0;i<len;i++){
		if(str[i]==' '){  //만약 문자가 공백일경우
			if(len==1)  //만약 문자열의 길이가 1일경우에는 공백 한개만 입력받았으므로 flag=1로 업데이트
				flag=1;
			if(i==0 || i==len-1)  //문자열의 처음과 끝이 공백인 경우에는 다음 문자로 넘어간다.
				continue;
			count++; // 그 외의 경우에는 문자이므로 count+1을 해준다.
		}
		
	}
	
	printf("%d",(flag ? count : count+1));  //만약 flag가 1이면 공백 한개인 문자이므로 count 출력 그 외에는 count+1을 출력

			

	
}

실행결과

 

반응형

'개발자 > C or C++' 카테고리의 다른 글

[백준] 10039번  (0) 2021.10.01
[백준] 2920번  (0) 2021.10.01
[백준] 1110번  (0) 2021.10.01
[백준] 8958번  (0) 2021.10.01
[백준] 2577번  (0) 2021.10.01

댓글