나 JAVA 봐라

[백준] 1357번 뒤집힌 덧셈 본문

코딩테스트/구현

[백준] 1357번 뒤집힌 덧셈

cool_code 2024. 4. 12. 01:10

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

 

1357번: 뒤집힌 덧셈

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

www.acmicpc.net

 

  • 단순히 String <-> int 변환을 반복해주며, String에서 값을 거꾸로 뒤집어주면 된다.
  • 마지막 최종 출력에서 int -> String으로 바꾸어서 String값을 출력할 때, 앞 글자가 0으로 시작할 수 있기에 flag 값을 둬서 0이면 출력하지 않도록 했다. 

 

+) 변환 메서드 같은 게 정확하게 기억이 안나서 각 잡고 외울 필요가 있음...

+) StringBuilder의 reverse() 함수를 사용하여 뒤집는 방법도 있을 듯 하다. 

 

package yejin.song;

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

public class BOJ_뒤집힌덧셈 {
    public static void main (String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String token[] = br.readLine().split(" ");

        int sum = 0;
        for (int i = 0; i< token.length; i++ ){
            String str = "";

           char[] arr = token[i].toCharArray();

           for (int j = arr.length-1; j >= 0; j--){
               str += arr[j];
           }

           sum += Integer.parseInt(str);
        }

        String rev = String.valueOf(sum);

        int flag = 0; //출력 불가능


        for (int i = rev.length()-1; i >=0 ; i--){
            if (rev.charAt(i) != '0'){ // 플래그 한번 바뀌면 쭉 출력 가능함.
                flag = 1;
            }

            if (flag == 1) System.out.print(rev.charAt(i));
        }
    }
}