개발자/C or C++
[백준] 1152번
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 |
댓글