반응형
문제 설명
The main idea is to count all the occurring characters in a string. If you have a string like aba, then the result should be {'a': 2, 'b': 1}.
What if the string is empty? Then the result should be empty object literal, {}.
해결 방법
1. 문자열을 요소별로 반복한다.
2. 문자열과 문자열의 수를 딕셔너리 키 값으로 넣는다.
def count(string):
dict = {}
for i in string:
try:
dict[i] += 1
except KeyError:
dict[i] = 1
return dict
if로 풀 수 있지만 이번에는 try excep구문으로 풀어보았다.
이렇게 푼 이유는 아직 문자열을 키로 받지 못한 상태에서 += 로 값을 할당하면 '키'가 없다는 키에러가 발생하기 때문이다.
이 문제의 경우 여러가지 방법으로 풀 수 있다.
# 내장함수를 사용하는 경우
from collections import Counter
def count(string):
return Counter(string)
# 딕셔너리 컴프리핸션을 사용한 경우
def count(string):
return {i: string.count(i) for i in string}
# set을 이용하면 반복횟수를 줄일 수 있다.
def count(s):
return {x:s.count(x) for x in set(s)}
# if를 사용한 경우
def count(string):
r = {}
for c in string:
if c in r:
r[c] += 1
else:
r[c] = 1
return r
# 딕셔너리 메서드 get을 이용한 방법
def count(string):
counter = {}
for char in string:
counter[char] = counter.get(char, 0) + 1
return counter
try except구문으로 푼 사람은 나밖에 없더라.
반응형
'나는 이렇게 학습한다 > Algorithm & SQL' 카테고리의 다른 글
Detect Pangram (0) | 2022.02.23 |
---|---|
The Hashtag Generator (0) | 2022.02.22 |
Human Readable Time (0) | 2022.02.20 |
Where my anagrams at? (0) | 2022.02.19 |
Write Number in Expanded Form (0) | 2022.02.18 |