python/알고리즘
[알고리즘] 백준 1152번, 단어의 개수, 1차원 배열 사용하기, python(12)
incastle
2019. 4. 13. 21:00
백준 1152번
문제
영어 대소문자와 띄어쓰기만으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.
문제를 보자마자 단어와 단어의 횟수가 쌍을 이룬다 => dictionary를 사용한다. 바로 생각이 났다.
sentence =list(map(str, input().split()))
sentence_dict = dict()
# 단어 사전을 만들 dictionary
for i in sentence:
if i in sentence_dict:
sentence_dict[i] = sentence_dict[i]+1
# 사전안에 있는 단어면 dictonary의 value에 +1을 해준다.
else:
sentence_dict[i] = 1
# 사전에 없는 단어면 사전에 추가하고 value는 1로 한다.
count = 0
for j in sentence_dict.values():
count += j
# 단어장의 모든 value들의 합을 구한다.
print (count)
정답자의 코드를 보니 사실 이 문제는 더 간단하게 풀 수 있다. (항상 나는 더 어렵게 생각한다, 나중에 어려운 문제를 풀 때 도움이 되리라...)
단어의 수가 중복이 되더라도 똑같이 카운트를 하기 때문에 그냥
str = input().strip()
if str == "":
print(0)
else:
print(str.count(" ") + 1)
# 공백을 카운트하고 +1을 한다.
문자열을 입력 받고 공백을 기준으로 count를 하면 된다.