알쓸코지
article thumbnail

🔗 문제

https://school.programmers.co.kr/learn/courses/30/lessons/181902

 

문제 설명

알파벳 대소문자로만 이루어진 문자열 my_string이 주어질 때, my_string에서 'A'의 개수, my_string에서 'B'의 개수,..., my_string에서 'Z'의 개수, my_string에서 'a'의 개수, my_string에서 'b'의 개수,..., my_string에서 'z'의 개수를 순서대로 담은 길이 52의 정수 배열을 return 하는 solution 함수를 작성해 주세요.

제한사항

  • 1 ≤ my_string의 길이 ≤ 1,000

입출력 예

 

💻 Code

from string import ascii_uppercase, ascii_lowercase


def solution(my_string):
    alphabet = ascii_uppercase + ascii_lowercase
    char_dict = dict.fromkeys(alphabet, 0)

    for i in my_string:
        char_dict[i] += 1

    return list(char_dict.values())    
  • 길이가 52인 리스트를 만든 뒤 ord()로 유니코드를 이용하여 문제를 풀 수도 있지만, 알파벳 그 자체를 키 값으로 이용하고 싶어서 이렇게 풀었다.
  • string 모듈의 ascii_uppercaseascii_lowercase는 알파벳 대문자와 소문자를 나타내는 문자열이다.
    • ascii_uppercase: "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    • ascii_lowercase: "abcdefghijklmnopqrstuvwxyz"
  • ascii_uppercaseascii_lowercase를 하나의 문자열(alphabet)로 합친 뒤, dict.fromkeys()를 이용하여
    모든 알파벳을 키로 하고 각 키에 대응하는 값을 0으로 초기화하는 딕셔너리 char_dict을 만든다.
  • for 루프를 통해 my_string의 각 문자를 확인하며 char_dict의 값을 1씩 증가시킨다.
  • 등장 횟수만 출력하기 위하여 char_dict.values()를 리스트로 변환하여 반환한다.

'Algorithm > 프로그래머스' 카테고리의 다른 글

[Lv.0/Python] 가까운 1 찾기  (0) 2023.07.15
[Lv.0/Python] 커피 심부름  (0) 2023.07.15
[Lv.0/Python] qr code  (0) 2023.07.13
[Lv.0/Python] 문자열 계산하기  (0) 2023.07.13
[Lv.0/Python] 구슬을 나누는 경우의 수  (0) 2023.07.13
profile

알쓸코지

@chocoji

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!