백준 1152번 단어의 개수
문제
영어 대소문자와 공백으로 이루어진 문자열(길이 1,000,000 이하)이 주어질 때 단어가 몇 개인지 출력한다. 한 단어가 여러 번 나오면 나온 횟수만큼 모두 센다. 단어는 공백 한 개로 구분되고 공백이 연속해서 나오지 않으며, 문자열은 공백으로 시작하거나 끝날 수 있다.
풀이
split()으로 단어를 나눈 뒤 길이를 센다. 처음에는 문제에 공백이 연속하지 않는다는 조건이 있어서 strip()으로 앞뒤 공백을 지우고 split(' ')을 썼는데 통과하지 못했다.
text = input()
print(len(text.strip().split(' ')))split()으로 바꾸자 통과했다.
text = input()
print(len(text.strip().split()))짚고 갈 점
- 인자 없는
split()은 연속한 공백 문자를 하나의 구분자로 보고 앞뒤 공백도 무시한다. 공백만 있는 문자열이면 빈 리스트가 나온다. split(' ')은 공백 하나하나를 구분자로 쓰기 때문에 공백이 연속하면 그 사이에 빈 문자열이 요소로 생기고, 앞뒤 공백이 있어도 빈 문자열이 생긴다.- 처음 코드가 틀린 이유는 입력이 공백 한 칸뿐인 경우로 추정된다.
strip()을 거치면 빈 문자열이 되고, 빈 문자열을split(' ')하면 빈 문자열 하나가 든 리스트가 되어 정답 0 대신 1이 나온다. 직접 제출해 확인한 것은 아니다.