간단한 논리구조로 해당 문제를 풀 수 있다.

1) int로 3개의 숫자를 입력받고,

2) 입력 받은 수의 곱의 결과값의 자료형을 list로 변환시킨다.

(여기서 해맸다.. for문을 통해 하고 싶지 않고 map을 통해 하고 싶었다... 그런데 map에서 str(A*B*C) 부분을 str을 사용해야 한다는 점을 계속 간과해서 해맸다.)

3) 이후로는 이중 for문을 통해서 list의 문자 하나씩 i를 통해 비교를 하는데,

4) i와 j를 비교한다 (j는 nums 배열의 방 번호를 뜻하도록 for문에서 0~9까지 비교하도록 한다)

5) 이후에 다시 for문을 통해서 nums 배열을 출력하면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
= int(input())
= int(input())
= int(input())
res = list(map(intstr(A*B*C)))  # 이 부분을 유의하자. int -> list로 바꾼다.
nums = [0]*10
for i in res:
    for j in range(10):
        if j == int(i):
            nums[j] += 1
for j in range(10):
    print(nums[j])
 
cs

 

 

문제 출처: https://www.acmicpc.net/problem/2577

 

2577번: 숫자의 개수

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

www.acmicpc.net

 

+ Recent posts