백준 1152번 풀이

문제

어떤 문장에서 단어가 몇 개인지를 세는 문제. 즉

전격은 10만볼트에 이르기도 해서 잘못 만지면 인도 코끼리라도 기절한다.

이 문장은 9글자다. 근데 이 문제… 부비트랩 있다…

풀이

import sys
a=sys.stdin.readline().strip()
a=a.split(" ")
print(len(a))

마! 그럼 단어와 단어 사이는 문장으로 나누니까 공백으로 나누면 되제! 하고 이래 냈다가 당신을 맞는 문장은 ‘틀렸습니다’가 된다. 문제에 부비트랩이 숨어있기 때문.

첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열은 공백으로 시작하거나 끝날 수 있다.

입력란에 이렇게 쓰여있다. split(” “)은 공백을 하나만 날리기때문에, 공백으로 입력하게 되면 그걸 단어로 처리해버리는 문제가 있다. 그래서

import sys
a=sys.stdin.readline().strip()
a=a.split()
print(len(a))

그래서 split()을 줘야 한다. split()은 공백이 몇 개건 po분리wer이 가능하기 때문.