백준2577 숫자의 개수 using Python

horiz.d·2021년 10월 28일
0

열어보며

이번 문제는 자연수 세개를 입력받아 이를 곱한 결과값에서,
0~9까지의 숫자가 몇번 나오는지 차례로 출력하는 문제이다.

핵심

  • 세 자연수의 곱을 한 자릿수로 분해하여 1차원 리스트에 순서대로 저장한다.

  • 0~9까지의 1차원 숫자 리스트를 만들어둔다.

  • 두 리스트를 2-Level의 Nested loop로 비교하여 1차원 숫자리스트에 곱셈분해리스트의 요소 중 몇개가 해당하는지 count하여 순서대로 출력한다.


구현 중간점검

#사전입출력설정
import sys
input = sys.stdin.readline

#입력
intInput = []
for i in range(3) :
  intInput.append(int(input()))

#처리 및 출력

  #(1)곱셈저장
mulResult = intInput[0]*intInput[1]*intInput[2]
print(mulResult)
  #(2)결과값이 몇의자리 수인지 판별
    # + 실시간 판별하며 각자리값 리스트에 저장
valList = []
tempDigit = mulResult
i = 0

while 1 : 
  valList.append(tempDigit % 10)#한자리수부터 순서대로 저장
  tempDigit = tempDigit // 10 #총 자릿수판별
  i += 1
  print("tempD :{0}, 시도:{1}".format(tempDigit,i))
  

  if tempDigit == 0 : #종료조건
    break

print(valList) 


포맷출력으로 요소들과 최종 저장된 요소리스트를 확인해 본 결과로 연산결과의 요소 분할 저장까지는 정상적으로 구현했음을 확인했다.

최종코드

#사전입출력설정
import sys
input = sys.stdin.readline

#입력
intInput = []
for i in range(3) :
  intInput.append(int(input()))

#처리 및 출력

  #(1) 곱셈저장
mulResult = intInput[0]*intInput[1]*intInput[2]
  #(2) 결과값이 몇의자리 수인지 판별
    # + 실시간 판별하며 각자리값 리스트에 저장
valList = []
tempDigit = mulResult
i = 0

while 1 : 
  valList.append(tempDigit % 10)#한자리수부터 순서대로 저장
  tempDigit = tempDigit // 10 #총 자릿수판별
  i += 1  

  if tempDigit == 0 : #종료조건
    break

  #(3) count의 기준이 될 비교 리스트에 0~9 저장
numList= []
numList.extend(map(int,range(10)))

  #(4) valList와 numList 0~9까지 비교 및 count 순차출력 
count = 0
for i in numList :
  for j in valList :
    if j == i :
      count += 1
  print(count)
  count = 0

위의 코드 구현에 사용된 손모델


결과 출력

profile
가용한 시간은 한정적이고, 배울건 넘쳐난다.

0개의 댓글