Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

luke

[백준] - 뒤집힌 덧셈(1357) (자바/Java) 본문

알고리즘문제/백준 문제(Java)

[백준] - 뒤집힌 덧셈(1357) (자바/Java)

luke-king 2024. 1. 12. 19:21

 

 

 

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

 

1357번: 뒤집힌 덧셈

어떤 수 X가 주어졌을 때, X의 모든 자리수가 역순이 된 수를 얻을 수 있다. Rev(X)를 X의 모든 자리수를 역순으로 만드는 함수라고 하자. 예를 들어, X=123일 때, Rev(X) = 321이다. 그리고, X=100일 때, Rev(

www.acmicpc.net

 

 

문제


 

 

 

 

작성코드


 

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int X = sc.nextInt();
        int Y = sc.nextInt();

        int x = rev(X);
        int y = rev(Y);
        int res = rev(x + y);
        System.out.println(res);

    }

    private static int rev(int n) {
        int reserve = 0;
        while (n != 0) {
            int digit = n % 10;
            reserve = reserve * 10 + digit;
            n /= 10;
        }
        return reserve;
    }

}

 

이 문제에서 중요한 건 입력값이 거꾸로 나와야 한다는 것이다.

어떻게 거꾸로 나오게 해야 할까? 입력값 X를 끝에서부터 한 개씩 자르겠다 그럼 10으로 나눈 나머지를 가져오면 된다.

123을 10으로 나누면 몫이120이고 나머지는 3이 된다.

그래서 나머지를 가져온다는 건 마지막 자리 숫자를 가져오겠다는 말과 같은 말이다.

 

이제 그 숫자를 어떻게 맨 앞으로 가져올지 생각해 보면

reserve에 10을 곱하고 내가 가져온 마지막 숫자를 더한다.

예를 보자면

reserve(3) = reserve(0) * 10 + 3 = 3

reserve(32) = reserve(3) * 10 + 2 = 32

reserve(321) = reserve(32) * 10 + 1 = 321

인 것이다.