관리 메뉴

솜씨좋은장씨

[BaekJoon] 2577번 : 숫자의 개수 (Python) 본문

Programming/코딩 1일 1문제

[BaekJoon] 2577번 : 숫자의 개수 (Python)

솜씨좋은장씨 2021. 5. 23. 00:20
728x90
반응형

코딩 1일 1문제! 오늘의 문제는 백준의 숫자의 개수입니다.

 

2577번: 숫자의 개수

첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다.

www.acmicpc.net

Solution 1

num1 = int(input())
num2 = int(input())
num3 = int(input())

x_num = list(str(num1 * num2 * num3))

answer = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

for num in x_num:
    answer[int(num)] += 1
    
for ans in answer:
    print(ans)

Solution 풀이

먼저 숫자 세개를 입력 받습니다.

그 다음 세개의 숫자를 곱한 값을 문자열로 바꾼다음 list로 바꾸어줍니다.

각 숫자가 몇번씩 나왔는지 카운팅할 0이 10개 들어있는 answer list를 만들어줍니다.

아까 곱한 값을 문자열로 바꾼다음 만든 list에서 하나씩 꺼내와서 int로 바꾼 값을 

answer list의 값에 접근하는 인덱스로 활용하여 해당 위치의 숫자의 값을 1씩 증가 시킵니다.

마지막으로 answer list의 값을 하나씩 꺼내와서 출력하면 끝!

 

Solution2

from collections import Counter

num1 = int(input())
num2 = int(input())
num3 = int(input())

x_num = list(str(num1 * num2 * num3))

cnt = Counter(x_num)

for i in range(10):
    if str(i) in cnt.keys():
        print(cnt[str(i)])
    else:
        print(0)

이번엔 collections의 Counter를 활용해보기로 했습니다.

먼저 아까와 같이 숫자를 세개 입력받고 이를 곱한뒤에 문자열로 바꾸고 이를 다시 list로 변환합니다.

그 다음 collections의 Counter를 활용하여 각 숫자별로 몇개씩 있는지 카운팅합니다.

마지막으로 0부터 9까지 반복문을 돌면서

cnt에 키가 있을 경우엔 cnt[str(i)]를 아닐경우에는 0을 출력합니다.

사실 이게 더 빠를 줄 알았는데!

느렸습니다.

 

SOMJANG/CODINGTEST_PRACTICE

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments