영어 대소문자와 띄어쓰기만으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.
첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열의 앞과 뒤에는 공백이 있을 수도 있다.
첫째 줄에 단어의 개수를 출력한다.
일단 단어의 개수를 구분하는 방법은 " 공백의 갯수 + 1 "을 하면 단어의 갯수를 알 수 있습니다.
코드로 표현하면 다음과 같습니다.
string = input() # 문장 입력받기
count = 1 # 위에 설명처럼 단어는 공백의 갯수 + 1 이므로 1로 정의
for i in range(0,len(string)):
if string[i] == " ":
count+=1
만약에 아래와 같은 문장이 있다.
Hello my name is wau2380
문자열 앞에 공백이 존재하므로 위 알고리즘은 4개가 아닌 5개로 인식하게 되어 틀리게 된다.
근데, 앞뒤의 공백만 지워주면 되기 때문에 상당히 쉬운 문제이다.
아래와 같은 코드를 작성해보자.
if string[0] == " ": # 앞 공백 제거
count-= 1
if string[len(string)-1] == " ": # 뒤 공백 제거
count-= 1
string = input()
count = 1
for i in range(0,len(string)):
if string[i] == " ":
count+=1
if string[0] == " ":
count-= 1
if string[len(string)-1] == " ":
count-= 1
print(count)
더 좋은 알고리즘이 있다면 댓글로 알려주세요!