[python] 백준 2577 : 숫자의 개수

728x90

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

 

2577번: 숫자의 개수

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

www.acmicpc.net

 

내 코드

mul = 1
for i in range(3):
    num = int(input())
    mul *= num

lst_mul = list(str(mul))
new_lst = [0]*10

for i in range(len(lst_mul)):
    new_lst[int(lst_mul[i]) % 10] += 1

for i in range(len(new_lst)):
    print(new_lst[i])

3개의 값을 모두 곱한 값을 mul에 바인딩한다.

mul의 값을 리스트형태로 찟어놓은 후 0~9가 각각 몇 개씩 들어있는지 확인할 리스트를 선언해준다.

각 자리수의 10을 나눈 나머지는 mul의 각 자리수가 된다.

lst_mul에서 0~9까지 각각 몇개 있는지 구분하기 위해 new_lst[0] ~ new_lst[9]에 1씩 더해주는 방법을 사용했다.

 

 

다른 사람 코드

n=[int(input()) for x in range(3)]
m=n[0]*n[1]*n[2]

for x in range(10):
    print(str(m).count(str(x)))

리스트와 for문을 결합하여 정수 3개를 입력받자마자 리스트 형태로 바인딩한다.

정수 3개의 곱을 m으로 받은 후 문자형으로 형변환한다.

count 함수를 이용하면 문자열에서 count함수의 인자 값이 몇개가 들어있는지에 대한 값을 반환받을 수 있다.

for문으로 0~9까지의 인덱스 값을 count 함수의 인자값으로 던져주고, 필요한 값을 반환받는다.

728x90