[백준] 2577번 파이썬 (Python) 풀이
CodingTest/문제 풀이

[백준] 2577번 파이썬 (Python) 풀이

문제

세 개의 자연수 A, B, C가 주어질 때 A × B × C를 계산한 결과에 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지를 구하는 프로그램을 작성하시오.
예를 들어 A = 150, B = 266, C = 427 이라면 A × B × C = 150 × 266 × 427 = 17037300 이 되고, 계산한 결과 17037300 에는 0이 3번, 1이 1번, 3이 2번, 7이 2번 쓰였다.
(출처: 2577)

입력

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

출력

첫째 줄에는 A × B × C의 결과에 0 이 몇 번 쓰였는지 출력한다. 마찬가지로 둘째 줄부터 열 번째 줄까지 A × B × C의 결과에 1부터 9까지의 숫자가 각각 몇 번 쓰였는지 차례로 한 줄에 하나씩 출력한다.

예제 입력 1

150
266
427

예제 출력 1

3
1
0
2
0
0
0
2
0
0

풀이

  • 먼저 입력으로 들어오는 세 자리 자연수를 각각 리스트의 항목으로 받으려고 했는데, 출력이 애매해서 a, b, c 변수를 선언한 후 각각 입력받았다.
  • 리스트에 abc의 결과를 각각 한 자리씩 넣어야 출력할 수 있다는 것을 알게 되어 그 방법을 찾았다.
  • 파이썬 리스트 생성
    l = [0] * n
  • 파이썬 리스트 길이 구하기
    len(l)
  • 파이썬 리스트에 원소 하나씩 넣기
    s = 'hello' l = list(s)
  • for문을 돌며 0부터 9까지 숫자가 몇 개씩 있는지 체크하는 카운터용 리스트 lc를 추가로 만들었다.
  • for문을 돌며 비교하며 카운트한다.
    • i가 0부터 l의 길이까지 범위 내에서 1씩 증가하며 for문을 돈다.
      • j가 0부터 9까지 범위 내에서 1씩 증가하며 for문을 돈다.
        • 리스트 l의 i번째 원소의 값과 j에 해당하는 숫자가 같다면 리스트 lc[j]에 1을 더한다.
  • int는 len()를 사용할 수 없다. -> str으로 변환
  • str과 int를 비교할 수 없어서 for문 내에서 str(j) 형변환해주었다.