기록하는 개발자

[백준 3062번] 수 뒤집기 - JAVA 알고리즘 본문

Baekjoon Online Judge

[백준 3062번] 수 뒤집기 - JAVA 알고리즘

gitseok 2022. 4. 26. 10:38

3062번
문제
수 124를 뒤집으면 421이 되고 이 두 수를 합하면 545가 된다. 124와 같이 원래 수와 뒤집은 수를 합한 수가 좌우 대칭이 되는지 테스트 하는 프로그램을 작성하시오.
입력
입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄에 하나의 정수 N(10 ≤ N ≤ 100000)이 주어진다.
출력
각 테스트 케이스에 대해서 원래 수와 뒤집은 수를 합한 수가 좌우 대칭이 되면 YES를 아니면 NO를 한 줄에 하나씩 출력한다.
예제 입력 예제 출력
   
4
13
58
120
5056
YES
NO
YES
NO
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Stack;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 선언
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); // 선언

		int N = Integer.parseInt(br.readLine()); //확인할 건수 받아오기
		
		for(int i = 0; i < N; i++) { //건수만큼 반복
			String numSet = br.readLine();
			String reverse = "";
			String check = null;
            
			for(int j = numSet.length()-1; j>=0; j--) { //뒤집은 값 생성
				reverse = reverse+numSet.charAt(j);
			}
            
			int sum = Integer.parseInt(numSet)+Integer.parseInt(reverse); // 입력값 + 뒤집은 값
			String sumSet = Integer.toString(sum); // 문자열로 변환
			
			for(int j = 0; j<(sumSet.length()/2); j++) { //중간까지만 검사
				char left =sumSet.charAt(j);
				char right =sumSet.charAt(sumSet.length()-j-1);
				
				if(left!=right) { // 대칭 검사
					check = "PASS";
					break;
				}
			}
			if(check==null)bw.write("YES\n"); //대칭이라면
			else bw.write("NO\n");            //대칭이 아니라면
		}
		
		bw.close();
		br.close();
	}
}

실행 결과

 

개인적으로 정리한 내용을 간단하게 풀어 작성했습니다.
이해가 안가는 부분은 댓글 남겨주시면 설명해드리겠습니다.
Comments