incastle의 콩나물

[알고리즘] 백준 1152번, 단어의 개수, 1차원 배열 사용하기, python(12) 본문

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를 하면 된다. 

Comments