티스토리 뷰

반응형

문제

 

1152번: 단어의 개수

첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 �

www.acmicpc.net

 

풀이

처음 시도에는 띄어쓰기(" ") 개수를 모두 센 후, 1을 더해 단어의 수를 구하려했다.

그리고 문자의 맨 앞(str[0])과 맨 뒤(str[-1])에 공백이 있는지 확인을 해서

있으면 띄어쓰기 수에 반영해주면 되겠지 하고 간단하게 생각을 했는데 자꾸 다른 값이 나왔다

 

import sys

sentence = sys.stdin.readline()
count = sentence.count(" ")


if sentence[0] == " ":
    count -= 1
    
if sentence[-1] == " ":
    count -= 1
    
print(count + 1)

 

 

분명 눈에 보이는 잘못이 없는데 안되길래 아스키로 찍어보니 공백을 " "으로 인식하지 않는 공백도 있다는걸 알게 됐다

 

파란색 '공백문자'에 해당하는 부분은 다 공백으로 찍히나보다.. 아직 그 차이는 잘 모르겠음

 

 

 

#  첫 문자가 공백일 경우
if ord(sen[0]) < 33 or ord(sen[0]) > 126:
    count -= 1

#  마지막 문자가 공백일 경우
if ord(sen[-1]) < 33 or ord(sen[-1]) > 126:
    if ord(sen[-1]) != 10:
        count -= 1

 

어쨌거나 그래서 아스키코드표 따라서 공백 범위를 지정해줬는데도 문제가 있길래

문자열의 모든 문자들을 아스키로 찍어봤다.. 그리고 이유를 알 수 있었다

 

나는 맨 뒤(str[-1])만 고려를 했는데 그 앞에도 안보이는 공백들이 숨어있었던것!!!!!

 

 

 

 

근데 중요한건

이런거 안 세고 바로 풀 수 있는 간단한 방법이 있다는것..

a = input().split()
print(len(a))

 

왜 애초에 이렇게 할 생각을 못했지 ........ 머ㅓ쓱

 

 

 

+)

 

제출 수가 10만개인거만 봐도 다른사람들도 어 뭐지 왜 틀린거 없는데 틀리지 ㅌㅋㅋㅋㅋ 하고 자꾸 제출했다는걸 볼 수 있는 문제

 

반응형