baekjoon 1152
문제는 위와 같다. C와 파이썬으로 둘 다 풀어 보았는데,,,
역시 이 문제처럼 비교적 간단한 문제에서조차도 파이썬이 문자열 다루기에 훨씬 간편하다고 느꼈다.
아래는 C언어 소스코드.
# include <stdio.h>
# include <string.h>
char str[1000000];
int main() {
gets(str);
int res = 0;
int len = strlen(str);
if (len == 1 && str[0] == ' ') res--;
else {
for (int i = 1;i < len - 1;i++) {
if (str[i] == ' ' && str[i - 1] != ' ') res++;
}
}
printf("%d\n", res + 1);
return 0;
}
처음에 gets가 아니라 fgets 함수를 사용했었는데, fgets는 마지막 개행문자까지 저장하기 때문에 문자열 길이를 생각할 때 조금 헷갈리는 느낌이었다. 그래서 그냥 개행문자를 저장하지 않는 gets 함수를 사용했다.
str1 = input()
arr = str1.split()
print(len(arr))
파이썬으로 작성한 코드는 위와 같다. 공백으로 구분해서 배열을 만들고, 배열 요소의 개수를 출력하면 끝!
다른 사람들의 풀이를 봤는데 strip 함수로 문자열 맨 앞과 맨 끝의 공백을 제거 -> count 함수로 공백의 개수(cnt) 세기 -> cnt + 1 출력! 이런 방식의 풀이도 있었다. 하지만 이 경우에는 공백 하나만 입력되는 케이스를 따로 처리해줘야 한다. 그렇지 않을 경우 공백 하나만 입력했을 때 결과가 0이 아닌 1이 된다. 코드는 아래와 같다.
str1 = input().strip()
if len(str1) == 0:
print(0)
else:
cnt = str1.count(' ')
print(cnt + 1)