본문 바로가기

알고리즘/백준

[백준] 2231 - 분해합 (JAVA/ 자바)

반응형

2231번 문제

문제를 친구에게 물어보기도 하면서 며칠 고민했는데도 전혀 감을 못잡겠어서 결국 다른 분들의 코드를 보면서 배웠다...

이 두 분의 코드와 설명을 봤다.

https://st-lab.tistory.com/98

https://velog.io/@gayeong39/%EB%B0%B1%EC%A4%80-2231-%EB%B6%84%ED%95%B4%ED%95%A9

 

백준 2231 분해합 [JAVA]

문제 해석 이문제를 이해하기 위해 꽤 많은 시간이 소요되었다..(문해력이 좀 부족한 듯 싶다.😂) 문제를 해석해보자면, 어떤 자연수(N)을 입력받아서 그 자연수를 만들 수 있는 어떤 자연수(M)을

velog.io

 

1.Scanner를 이용한 방법

import java.util.Scanner;

public class Main{
public static void main(String[] args){
    
    Scanner sc = new Scanner(System.in);
    
    int N = sc.nextInt();
    int num = 0;
    int M = 0;

    for(int i=0; i<N; i++){
        num = i;
        int sum = 0;

        while(num != 0){
            sum += num % 10;
            num /= 10;
        }     
        if(sum + i == N){
            M = i;
            break;
        }
    }
    System.out.println(M);
    sc.close();
    }
}

 

2. BufferedReader를 이용한 방법

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main{
public static void main(String[] args)throws IOException{
    
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    
    int N = Integer.parseInt(br.readLine());
    int num = 0;
    int M = 0;

    for(int i=0; i<N; i++){
        num = i;
        int sum = 0;

        while(num != 0){
            sum += num % 10;
            num /= 10;
        }       
        if(sum + i == N){
            M = i;
            break;
        }
    }
    System.out.println(M);
    br.close();
    }
}

while문 부분의 식을 잘 이해하지 못해서 힘들었다.

매일 한 문제씩 하는 게 목표였는데 문제가 막힐 때마다 며칠씩 고민해보느라 쉽지 않다..

그래도 열심히 계속 해나가려고 한다.

반응형