[백준:2231] 분해합 (JAVA)

dev_kiiim·2022년 11월 24일
0

CODING TEST

목록 보기
5/23
post-thumbnail

오늘은 시험이 있어서 시험 다 보고 문제를 풀었다.

오늘 풀어본 문제는 어제와 같은 브루트 포스에 있는 2231번 분해합이라는 문제이다.
문제를 본 직후에는 좀 어렵나,, 생각했는데
조금만 생각을 해보니 어떻게 풀어야할지 감이 왔다.

생성자를 구하는 문제였고, 반복문으로 0에서부터 돌려보면서 조건에 맞는 생성자를 찾으면 될 것 같다고 생각이 들었지만
역시나 한번에 통과하지는 못했다,,🤣


public static void main(String[] args) {
    Scanner num = new Scanner(System.in);
    int input = num.nextInt();
    int M = 0;
    int mM = 0;
    int sum = 0;

    for(int i=0; i<input; i++) {
        while (mM != 0) {
            sum += mM % 10;
            mM /= 10;
        }

        if(sum + M == input){
            break;
        }
    }
    System.out.println(M);
}

처음 제출한 코드이다.
사용되는 변수가 많다보니까 변수에 대한 역할이 100% 정리되지 않은 상태였고,
그 상태로 '이거겠지~'하는 생각으로 코드를 짜다보니 실수가 나왔다.


public static void main(String[] args) {
    Scanner num = new Scanner(System.in);
    int input = num.nextInt();
    int M = 0;
    int sum = 0;

    for(int i=0; i<input; i++) {
        int number = i;
        sum = 0;

        while (number!= 0) {
            sum += number % 10;
            number /= 10;
        }

        if(sum + i == input){
            M = i;
            break;
        }
    }
    System.out.println(M);
}

사실 지금도 집중하지 않으면 왜 이렇게 했지,,? 하는 생각이 들기도 한다,,,ㅎ
조건에 맞는 수를 찾기위해 0에서부터 세어나갈때 그 수(i)를 나머지를 구하거나, 나누기를 한다던가 하면서 계산에 들어갈 변수를 하나 지정해서 넣어두고, i는 고정되어 있도록 해야하는 점.
내가 코드를 짜면서 안일하게 생각했던 부분이다.

이런 사소한 실수를 줄일 수 있도록 더 집중해서 풀어야겠다!!!!

0개의 댓글