Processing math: 100%

II-eugene-II Note

Home Math Code
백준 02577번 - 숫자의 개수

백준 02577번 / 2577번 문제 링크
문제 이름 : 숫자의 개수
주 언어 : Python
태그 : 수학 / 구현 / 사칙연산
solved.ac 등급 : Bronze II (2023/05/16 확인)


문제 보기

문제 :

세 개의 자연수 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번 쓰였다.

입력 :

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

출력 :

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



우선 기본적으로 한 줄에 하나의 정수가 있고, 이 세 수를 다 곱해야 합니다.
각 자릿수가 무엇인지 세주기 위해 세 수의 곱을 문자열로 변환시켜주면 편한데, 이 과정에서 str(정수형 변수)를 하면 변환이 됩니다.
예를 들어, str(100) == "100"입니다.
그리고나면, 각각의 자리에 0이 몇개인지, 1이 몇개인지 세어주기 위해 파이썬 count 함수 를 사용해줍니다.
0의 개수, 1의 개수가 필요하므로, for num in "0123456789": 를 사용해주면 num = "0"부터 "1", "2", ...를 할당하게 됩니다.

A = int(input())
B = int(input())
C = int(input())
ABC = str(A * B * C)
for num in "0123456789":
print(ABC.count(num))
view raw BOJ02577.py hosted with ❤ by GitHub

마땅하게 정수형을 문자열로 바꾸는 방법이 없는 언어에서는 대체로 다음과 같이 풀 수 있습니다.
10칸짜리 배열을 만들어서, 예를 들어 A, B, C를 다 곱한 ABCABC = 1234567이라 하면 (실제로 가능한지는 잠시 미뤄줍시다.) 10으로 나눈 나머지가 7이므로, 배열의 인덱스 7에 + 1을 해줍니다.
그 이후, ABC를 10으로 나눈 몫인 123456만 취해서, 또 10으로 나눈 나머지가 6이므로 6번 인덱스에 1을 추가해주고...같은 과정을 ABC가 0이 될 때까지 반복해주는 방법으로 푸는 듯 합니다.


이 문제는 solved.ac Class 1 에 수록된 문제입니다.
다른 문제도 같이 풀어보시는걸 추천드립니다.

Class 1 문제 모음

문제 번호 문제 제목 문제 등급 에센셜 여부 해설
01000번 A+B Bronze V A+B 해설
01001번 A-B Bronze V A-B 해설
01008번 A/B Bronze V ★★★ A/B 해설
01152번 단어의 개수 Bronze II 단어의 개수 해설
01330번 두 수 비교하기 Bronze V ★★★ 두 수 비교하기 해설
02438번 별 찍기 - 1 Bronze V ★★★ 별 찍기 - 1 해설
02439번 별 찍기 - 2 Bronze IV 별 찍기 - 2 해설
02475번 검증수 Bronze V 검증수 해설
02557번 Hello World! Bronze V ★★★ Hello World! 해설
02562번 최댓값 Bronze III ★★★ -
02577번 숫자의 개수 Bronze II 숫자의 개수 해설
02675번 문자열 반복 Bronze II ★★★ -
02739번 구구단 Bronze V ★★★ -
02741번 N 찍기 Bronze V N 찍기 해설
02753번 윤년 Bronze V -
02884번 알람 시계 Bronze III -
02920번 음계 Bronze II 음계 해설
03052번 나머지 Bronze II -
08958번 OX퀴즈 Bronze II -
09498번 시험 성적 Bronze V 시험 성적 해설
10171번 고양이 Bronze V 고양이 해설
10172번 Bronze V 개 해설
10250번 ACM 호텔 Bronze III -
10809번 알파벳 찾기 Bronze V -
10818번 최소, 최대 Bronze III ★★★ 최소, 최대 해설
10869번 사칙연산 Bronze V ★★★ 사칙연산 해설
10871번 X보다 작은 수 Bronze V -
10950번 A+B - 3 Bronze V ★★★ -
10951번 A+B - 4 Bronze V ★★★ -
10952번 A+B - 5 Bronze V ★★★ -
10998번 AxB Bronze V AxB 해설
11654번 아스키 코드 Bronze V ★★★ -
11720번 숫자의 합 Bronze IV ★★★ 숫자의 합 해설
25083번 새싹 Bronze V ★★★ -
27866번 문자와 문자열 Bronze V ★★★ -
31403번 A+BC Bronze IV -

-번째 푼 문제 (2022/--/--)