[Python] 코딩 도장 - 숫자의 개수 구하기

Updated:

코딩 도장 사이트의 문제를 직접 풀어본 내용을 정리하여 올립니다.

코딩 도장에서 여러 문제를 확인할 수 있습니다.

난이도 순으로 차근차근 풀어보려 합니다.


[문제: 숫자의 개수 구하기] - Lv.1

예로 10 ~ 15 까지의 각 숫자의 개수를 구해보자

10 = 1, 0 11 = 1, 1 12 = 1, 2 13 = 1, 3 14 = 1, 4 15 = 1, 5

그러므로 이 경우의 답은 0:1개, 1:7개, 2:1개, 3:1개, 4:1개, 5:1개

출처: https://codingdojang.com/scode/504?answer_mode=hide


[풀이]

def num_cnt(num_lst):
    cnt = {i:0 for i in range(10)}
    
    for num in num_lst:
        for i in str(num):
            cnt[int(i)] += 1
    
    fin_cnt = {i:str(j) + "개" for i,j in cnt.items()}
    
    return fin_cnt

num = range(1,1001)
print(num_cnt(num))
{0: '192개', 1: '301개', 2: '300개', 3: '300개', 4: '300개', 5: '300개', 6: '300개', 7: '300개', 8: '300개', 9: '300개'}

0부터 9의 key를 가지는 dictionary를 생성하였다.

입력받은 문자로 된 숫자의 각 숫자별로 카운트를 dictionary의 values에 저장한다.


[추천 풀이]

count={ x:0 for x in range(0,10) }

for x in range(1,1001):
    for i in str(x):
        count[int(i)]+=1

print(count)
{0: 192, 1: 301, 2: 300, 3: 300, 4: 300, 5: 300, 6: 300, 7: 300, 8: 300, 9: 300}

다른 분이 푸신 풀이 중 추천수가 많은 풀이이다.

풀이 자체가 거의 똑같은데 사실 코딩 도장 처음 문제들을 훑어 보다가 이미 본 문제이다.

dictionary를 사용한 방법이 인상 깊어서 계속 기억하고 있다.

Leave a comment