문제

1. 첫 번째 방법
입력을 한 번에 받아 곱셈을 수행한 후 배열을 만들어 모든 숫자를 저장해놓고 그 숫자가 존재하는지 하나씩 탐색하는 방법 사용
a = []
for i in range(3):
a.append(input())
multiply = 1
for multi in a:
multiply *= int(multi)
multi_result = list(str(multiply))
result = [0] * 10
# 배열에 1부터 9까지 저장해놓고 숫자 몇개인지확인
number = ['0','1','2','3','4','5','6','7','8','9']
for res in number:
cnt = 0
for ans in multi_result:
if ans == res:
index = int(res)
result[index] += 1
for i in range(len(result)):
print(result[i])
세 번의 입력을 받아 배열에 입력받은 숫자를 모두 저장 후 변수를 만들어 곱셈의 결과를 저장한다.
그 후 곱셈의 결과를 숫자별로 하나씩 쪼개서 다시 저장해 준 후 새로운 배열(number)을 만들어 나올 수 있는 모든 숫자를 저장해준다.
그 후 number문 만큼 for문을 돌고 ,결과값만큼 for문을 돌면서 결과 값이 저장되어있는 배열의 값과 숫자를 모두 저장해놓은 배열의 값이 같다면 새로 만든 배열에 이 결과를 업데이트 해준다. (첫 번째 for문이 0 ~ 9까지 돌며 결과 값이 저장 되어 있는 배열의 값을 하나씩 탐색 가능)
그 후 결과를 한 줄씩 출력해야 하므로 for문을 다시 한 번 돌려서 인덱스 번호만큼 순서대로 출력해준다.
-> 너무 복잡하게 푼 것 같아 다른 방법이 있을 것 같아 찾아보았다.
2. 두 번째 방법
count함수 사용
a = int(input())
b = int(input())
c = int(input())
multiply = list(str(a*b*c))
for i in range(10):
print(multiply.count(str(i)))
파이썬에 내장 되어 있는 count함수를 사용하여 뒤에 찾고 싶은 게 무엇인지 같이 적어주면 바로 개수를 세준다.
곱셈의 결과를 문자열로 바꾸어 리스트로 만들어 하나씩 저장 해 두었으므로 1부터 9까지 list에 몇 개씩 저장되어 있는지 문자열로 찾아 출력해 주면 간단하게 해결 가능하다.
'Algorithm > 백준' 카테고리의 다른 글
| 백준 2675번 문자열반복 (0) | 2022.03.17 |
|---|---|
| 백준 10809번 알파벳찾기 (0) | 2022.03.17 |
| 백준 11720번 숫자의합 (0) | 2022.03.14 |
| 백준 4344번 평균은넘겠지 (0) | 2022.03.14 |
| 백준 8958번 OX퀴즈 (0) | 2022.03.14 |