반응형
문제
https://www.acmicpc.net/problem/1152
1152번: 단어의 개수
첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열
www.acmicpc.net
풀이
공백까지 입력을 받기위해 %[^\n]을 이용하여 문자열을 받았다.
문자열을 for문으로 확인하기전에 만약 아무런 입력도 하지않고 엔터만 쳐 배열에 공백만 들어갈수있는 경우도 있기 때문에
길이가 1 이고 그 위치에 공백만 있다면 단어는 없는것이기에 0을 출력하고 프로그램을 종료 합니다.
만약 그것이 아니라면 문자열 처음부터 길이만큼 돌게되는데 맨 앞과 뒤에 공백이 들어갈수 있기때문에 그 두 곳은 제외 해야하기에
반복문에서 두번을 적게 한다.
그리고 마지막 단어는 Count 하지 못하기에 +1 를 한다.
소스코드
#include <stdio.h>
#include <string.h>
int main(void)
{
char arr[1000000];
int len, count = 0;
// 공백을 포함하여 문자열을 입력받는다.
scanf("%[^\n]s", arr);
len = strlen(arr);
// 길이가 1이고 공백일때 문자가 없다는것이므로 0을 출력 후 종료
if(len == 1 && arr[0] == ' ')
{
printf("%d", count);
return 0;
}
// 첫번째, 마지막 공백을 제외하고 반복문을 돌린다.
for(int i = 1; i < len - 1; i++)
{
if(arr[i] == ' ') count++;
}
// 마지막 단어를 카운팅할수없기 때문에 1을 더한다.
printf("%d", count + 1);
return 0;
}
반응형
'프로그래밍 > 백준(BOJ)' 카테고리의 다른 글
[백준(BOJ) / C][Silver Ⅳ] 9012번 : 괄호 (1) | 2024.01.03 |
---|---|
[백준(BOJ) / C][Silver Ⅴ] 25644번 : 최대 상승 (0) | 2024.01.03 |
[백준(BOJ) / C][Silver Ⅳ] 1158번 : 요세푸스 문제 (1) | 2024.01.02 |
[백준(BOJ) / C][Silver Ⅴ] 7568번 : 덩치 (1) | 2024.01.01 |
[백준(BOJ) / C][Bronze I] 1032번 : 명령 프롬포트 (1) | 2023.12.31 |