본문 바로가기
Algorithm

[구현/수학] 백준 2577 숫자의 개수 - Python, Java

by jangThang 2022. 1. 23.
반응형

백준 온라인 저지

 

[ Contents ]

     

     

    1. 문제 (링크 참조)

     

    2577번: 숫자의 개수

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

    www.acmicpc.net

     

     

     

    2. 문제 풀이

     세 수를 곱한 결과의 각 자릿수 숫자를 세는 문제입니다. 각 자릿수마다 숫자가 몇 번씩 쓰였는지를 구해야 합니다.

     

     

    2022.01.19 - [Algorithm] - [Algorithm] 단골 1번 문제, 구현 / 수학

     

    [Algorithm] 단골 1번 문제, 구현 / 수학

    1. 구현  단순히 '구현'만 하면 되는 문제 유형입니다. 문제를 이해하고 입력에 맞춰 적절한 출력만 하면 됩니다. 특별한 알고리즘이나 프로그래밍적 기법 없이, 단순 제어문만 사용하여 해결할

    star7sss.tistory.com

     10으로 나누며 나머지를 세면 됩니다. 간단한 수학문제입니다.

     

     

     

    3. 코드

    A = int(input())
    B = int(input())
    C = int(input())
    
    res = A*B*C
    num = [0]*10
    while(res != 0):
        tmp = res%10
        num[tmp] += 1
        res = res//10
    for i in num:
        print(i)

     [0]*10 = [0,0,0,0,0,0,0,0,0,0] 으로 리스트가 초기화됩니다. range 등의 리스트 초기화 함수를 쓰는 것보다 간편합니다.

     숫자의 개수는 1의 자리부터 하나씩 셉니다. 그 후 // 연산자를 이용해서 10으로 나눈 몫만 남겨주면, 1의 자리가 없어집니다.

     ex) 123 % 10 = 3 (나머지), 123 // 10 = 12 (몫)

     

     

    import java.util.Scanner;
    public class Main {
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		
    		int a = sc.nextInt();
    		int b = sc.nextInt();
    		int c = sc.nextInt();
    		
    		int number = a*b*c;
    		int[] num = new int[10];
     		while(number != 0) {
     			num[number%10]++;
     			number /= 10;
     		}
     		for(int i = 0; i < 10; i++) {
     			System.out.println(num[i]);
     		}
    		
    		sc.close();
    	}
    }

     

    반응형

    댓글