incastle의 콩나물
[알고리즘] 백준 1152번, 단어의 개수, 1차원 배열 사용하기, python(12) 본문
백준 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를 하면 된다.
'python > 알고리즘' 카테고리의 다른 글
[알고리즘] 백준 2775번, 부녀회장이 될테야, 재귀 함수, python(15) (1) | 2019.04.14 |
---|---|
[알고리즘] 백준 2920번, 다이얼, 문자열 사용하기, python(13) (0) | 2019.04.13 |
[알고리즘] 백준 2920번, 음계, 1차원 배열 사용하기, python(11) (0) | 2019.04.13 |
[알고리즘] 백준 1065번, 한수, 함수 만들기, python(9) (0) | 2019.04.11 |
[알고리즘] 백준 1110번, 더하기 사이클, if문 활용, python(8) (0) | 2019.04.08 |
Comments