728x90
반응형
SMALL
Programmers 레벨 0_코딩 기초 트레이닝 문제 풀이
https://school.programmers.co.kr/learn/challenges/training?order=recent
코딩 기초 트레이닝 | 프로그래머스 스쿨
프로그래밍 언어를 처음 접하거나 프로그래밍 언어에 익숙해지고 싶다면? 코딩 역량을 탄탄하게 길러주는 코딩 기초 트레이닝으로 차근차근 코딩에 대한 기초 감각을 길러 보세요.
school.programmers.co.kr
풀이 날짜 : 2023-09-16
소요 시간 : 17min
문제 설명
알파벳 대소문자로만 이루어진 문자열 my_string이 주어질 때, my_string에서 'A'의 개수, my_string에서 'B'의 개수,..., my_string에서 'Z'의 개수, my_string에서 'a'의 개수, my_string에서 'b'의 개수,..., my_string에서 'z'의 개수를 순서대로 담은 길이 52의 정수 배열을 return 하는 solution 함수를 작성해 주세요.
정규표현식을 이용할 순 없을까 고민을 하느라 문제 풀이가 다소 느려졌다. 정규표현식을 파이썬에 적용하는 방법을 공부해야겠다고 생각했다.
나의 풀이
def solution(my_string):
answer = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
ms = []
ms = [ms.append(s) for s in my_string]
return [my_string.count(i) for i in answer]
단순하게 풀었다. answer에 대문자소문자 a-z를 넣었고, my_string을 리스트로 바꿔서 안에 든 요소를 카운트했다. 별로 깔끔한 코드는 아니라고 생각했다. answer에 문자를 하나하나 넣는 방법이 코딩을 하는 이유와 어울리지 않다고 느꼈기 때문이다.
다른 풀이
def solution(my_string):
answer=[0]*52
for x in my_string:
if x.isupper():
answer[ord(x)-65]+=1
else:
answer[ord(x)-71]+=1
return answer
아스키코드 변환 함수 ord()를 이용했다.
다른 풀이 2
def solution(my_string):
return [my_string.count(alphabet) for alphabet in 'abcdefghijklmnopqrstuvwxyz'.upper()+'abcdefghijklmnopqrstuvwxyz']
다른 풀이 3
def solution(my_string):
return [my_string.count(chr(i)) for i in range(65, 91)] + [my_string.count(chr(i)) for i in range(97, 123)]
728x90
반응형
LIST
'Coding Study > Programmers (Python)' 카테고리의 다른 글
[프로그래머스/파이썬] Lv.0 글자 지우기 (0) | 2023.09.16 |
---|---|
[프로그래머스/파이썬] Lv.0 배열 만들기 1 (0) | 2023.09.16 |
[프로그래머스/파이썬] lv.0 qr code (0) | 2023.09.15 |
[프로그래머스/파이썬] lv.0 세로 읽기 (0) | 2023.09.15 |
[프로그래머스/파이썬] lv.0 문자열 뒤집기 (0) | 2023.09.15 |