문제
https://www.acmicpc.net/problem/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이 가능하기 때문.
'BOJ > [BOJ] Python' 카테고리의 다른 글
백준 5622번 풀이 (0) | 2022.08.18 |
---|---|
백준 2908번 풀이 (0) | 2022.08.18 |
백준 10809번 풀이 (0) | 2022.08.18 |
백준 11720번 풀이 (0) | 2022.08.18 |
백준 1065번 풀이 (0) | 2022.08.18 |