Algorithm/백준

백준 2577번 숫자의 개수

코딩쪼앙 2022. 3. 14. 12:47

문제

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