Coding Test

CT | 백준 2577번 숫자의 개수

이진유진 2024. 10. 21. 15:11
반응형

https://www.acmicpc.net/problem/2577


처음 알고리즘을 공부할때 당연하게도 풀어야할 배열의 가장 기초 문제를 풀어봤습니다 :) 

 

import java.util.*; 

public class Main {
    
public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        int multiple = 1;

        for (int i = 0; i < 3; i++) {
            int input = scanner.nextInt();
            multiple *= input;
        }
        scanner.close();

//        System.out.println(multiple);

        List<Integer> digits = new ArrayList<>();
        String numberStr = String.valueOf(multiple);

        for(char c : numberStr.toCharArray()) {
            digits.add(Character.getNumericValue(c)); // 각 문자를 숫자로 변환해 리스트에 추가
        }
        int cnt = 0;
        for(int j = 0; j < 10; j++) {
            for(int i = 0; i < digits.size(); i++) {
                if(digits.get(i) == j) {
                    cnt++;
                }
            }
            System.out.println(cnt);
            cnt = 0;
        }
    }
}

 

* numberStr.toCharArray() 

 - 문자열을 char 배열로 변환. 그런 다음 각 자릿수를 순차적으로 처리하여 리스트에 추가.

 

* Character.getNumericValue(c));

 - char 값을 정수형 숫자로 변환. 

 

아래는 내 코드를 GPT에게 리팩토링을 부탁한 코드다. 

import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int multiple = 1;

        // 3개의 입력 값을 곱함
        for (int i = 0; i < 3; i++) {
            multiple *= scanner.nextInt();
        }
        scanner.close();

        // 자릿수의 등장 횟수를 저장할 배열
        int[] digitCount = new int[10];

        // 곱한 결과를 문자열로 변환해 자릿수별로 카운팅
        String numberStr = String.valueOf(multiple);
        for (char c : numberStr.toCharArray()) {
            int digit = Character.getNumericValue(c);
            digitCount[digit]++;
        }

        // 0부터 9까지의 등장 횟수를 출력
        for (int count : digitCount) {
            System.out.println(count);
        }
    }
}

 

이번주는 첫번째 스터디 주제인, 
배열/연결리스트/스택/큐/덱 중에서 배열의 가장 기초 문제를 해결해봤습니다 :) 
반응형