본문 바로가기
공부/알고리즘

[백준]2577_python파이썬 풀이

by happyeuni 2021. 8. 26.

list_A = [int(input()) for i in range(3)]
num = list_A[0] * list_A[1] * list_A[2]
list_B = [0 for i in range(10)] 

while True:
    if num == 0:
        break
    else:
        list_B[num % 10] += 1
        num //= 10
        
for i in list_B:
    print(i)

엔터로 구분된 입력을 한 줄에 처리하기 위하여 리스트를 이용하였다. (list_A)

 

그리고 또 다른 중요한 리스트인 list_B 아래와 같이 초기화를 해주었다. 숫자가 나올 때마다 값을 1씩 올려줄 것이다.

list_B = [0,0,0,0,0,0,0,0,0] 이렇게 써줘도 무방하다.

list_B[0] list_B[1] list_B[2] list_B[3] list_B[4] list_B[5] list_B[6] list_B[7] list_B[8] list_B[9]
0 0 0 0 0 0 0 0 0 0

나중에 첫 번째 줄에 0이 몇 번 쓰였는지, 두 번째 줄에 1이 몇번 쓰였는지를 이 리스트로 간단하게 대응시켜 표현할 수 있다. 리스트 0번째 요소 = 0이 몇 번 쓰였는지 = 첫 번째 줄 이런식으로 말이다.

 

while문의 else 에서는

곱셈의 결과를 num에 저장하고, 그 num의 1의자리 숫자를 나머지 연산을 통해 구하였다.  num % 10

만약에 3456 % 10 = 6 을 나타낸다. 그래서 6이 나왔으니 list_B의 7번째 요소(7번째 줄)인 list_B[6]에 1의 값을 더해준다.

그리고 3456 // 10 = 345 이런식으로 숫자를 변형시켜준다는 뜻이다.

 

그리고 출력!

 

 

이건 다른 사람 풀이

a = int(input())
b = int(input())
c = int(input())
total_str = str(a*b*c)  # 숫자를 곱해서 str타입으로 변환

for num in range(10):  # 0부터 9까지
    num_count = total_str.count(str(num))
    print(num_count)

count 함수를 이용하였다. 오..훨씬 간단하다

댓글