asdf1357   3년 전

일단 맨 처음과 끝에 공백이 있을 수 있어서 strip()으로 사전에 양쪽 공백을 제거한 후,  문제에서 제시한 기준인 '단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다'에 의거해서 strip()으로 양쪽 공백을 처리한 문자열 내의 띄어쓰기를 count한 후 거기다 +1을 해주는 원리입니다.

+1을 해주는 이유는 예를 들어 My name is John 과 같은 문장에서 양쪽 공백이 없는 한, "단어의 개수 = 문자열 내의 띄어쓰기 개수 + 1" 을 해주기 때문입니다.

예제는 물론이고 다른 문장도 대입해봐서 이상이 없는데, 시간초과도 아니고 왜 틀리는지 궁금합니다 

input().split()으로 해서 하는 방법도 있긴 한데 왜 이 방법이 안되는지 궁금합니다

shg9411   3년 전

반례입니다.

'                                    ' 

asdf1357   3년 전

ㄴ 문제에서 공백이 연속으로 나올 수 없다고 적혀있는데 반례가 될 수 있을까요?

shg9411   3년 전

공백 하나라고 생각하시면 될 것 같습니다.

djm03178   3년 전

입력으로 공백 하나만 주어지는 경우가 반례입니다.

asdf1357   3년 전

ㄴ 아 그런 반례도 있군요. 차라리 그냥 실제 사용할때도 split()로 구분자를 기준으로 단어 나누는게 훨씬 실용적이겠네요

댓글을 작성하려면 로그인해야 합니다.