안경잡이 구루루

백준 10808 (알파벳 개수) [Python/파이썬] [Implemnet/구현] 본문

파이썬(Python)/문제풀이(백준,BaekJoon)

백준 10808 (알파벳 개수) [Python/파이썬] [Implemnet/구현]

구루루(gururu) 2023. 10. 14. 13:28
반응형

https://www.acmicpc.net/problem/10808

 

10808번: 알파벳 개수

단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다.

www.acmicpc.net

 


나:

alphabet = {
    'a':0,'b':0,'c':0,'d':0,'e':0,'f':0,'g':0,'h':0,'i':0,
    'j':0,'k':0,'l':0,'m':0,'n':0,'o':0,'p':0,'q':0,'r':0,
    's':0,'t':0,'u':0,'v':0,'w':0,'x':0,'y':0,'z':0
    }
s = input()
for i in s:
    alphabet[i] += 1
print(*alphabet.values())

완성된 코드는 위와 같다.

 s에 포함된 알파벳 뿐만 아니라 전체 알파벳에 대한 개수도 출력해야 하기 때문에 딕셔너리를 사용하는 것이 유리하다고 생각했다.

그래서 모든 알파벳 : 개수 의 형식으로 alphabet 딕셔너리를 만들었다.

이후 입력값을 변수 s 에 받고 반복문 for 을 통해 각 알파벳에 해당하는 딕셔너리 value 값을 +1 해줬다,

최종적으로 모든 딕셔너리 value 값들을 공백으로 구분해서 출력해야 하기 때문에 아스테리스크(*)를 앞에 사용했다.


다른사람:

S = input()

cnt = dict()
alphabet = 'abcdefghijklmnopqrstuvwxyz'
for alpha in alphabet:
    cnt[alpha] = 0

for alpha in S:
    cnt[alpha] += 1
  

print(' '.join(map(str, list(cnt.values()))))

완성된 코드는 위와 같다,

주목할 점은 두가지로 1. 딕셔너리 만들기 ,  2. 닥셔너리 출력  부분이다

딕셔너리를 만들 때 수작업이 아닌 변수에 모든 알파벳을 넣고 for 반복문을 한번 더 사용해 아무것도 없는 딕셔너리에 하나씩 추가하는 형식이용.

딕셔너리의 value 값들을 출력할 때 join() 함수를 이용. 이때 join은 문자일 때 가능하기 때문에 정수형인 values 를 str로 바꾸기 위해 map() 함수 이용함.

반응형