본문 바로가기

<Java CodeUp 1617 문제: 뒤집어 더하기>

 

 

<문제 설명>

앞으로 읽으나 뒤로 읽으나 똑같은 문장을 회문이라고 한다.

예를 들어 “기러기”는 거꾸로 읽어도 “기러기”이다.

이를 이용하여 “뒤집어 더하기 암호”라는 것을 개발했다.

뒤집어 더하기 암호는 입력받은 숫자를 뒤집어서 더했을 때, 그 수가 회문이 되면 정상적인 암호이고, 회문이 아니라면 비정상적인 암호로 처리한다.

예를 들어 195는 뒤집은 수 591과 더하면 786이 되므로 비정상적인 암호이다.

이와는 달리 5214는 뒤집은 수 4125와 더하여 9339가 되어 정상적인 암호임을 알 수 있다.

한 숫자를 입력받아서 정상적인 암호인지 아닌지를 판단하는 프로그램을 작성하시오.

 

 

<입력>

첫 번째 줄에 정수 n이 입력된다.

( 1≤n≤10,000 )

 

 

<출력>

정상적인 암호라면 "YES"

비정상적이라면 "NO"를 출력한다.

 

 

<입력 예시>

5214

 

<출력 예시>

YES

 

 

< 1617 : 뒤집어 더하기 -- 소스코드 >

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package ReverseNumber;
import java.util.Scanner;
 
public class ReverseNumber {
    
    // 입력한 숫자와 역순 숫자의 합을 담는 정수
    private int sum; 
        
    // sum의 길이를 담기 위한 정수
    private int length;
    
    // 입력한 숫자를 역순으로 만들어주는 메소드
    public static int reverse(int num){
        
        int result = 0;
        
        while(num != 0){
            
            result = result * 10 + num % 10;
            
            num /= 10;
            
        }
        
        return result;
        
    }
    
    public ReverseNumber() {
        
        Scanner sc = new Scanner(System.in);
        
        System.out.println("숫자를 입력하세요 \n범위는 1부터 10000까지...\n");
        
        int num = sc.nextInt();
        
        // 입력한 num의 역순출력
        System.out.println(reverse(num));
        
        // 입력한 num과 역순의 합
        int sum = (num+reverse(num));
        
        System.out.println("'"+sum+"'");
        
        // num과 그 역순의 합이 
        
        // 일의 자리 인가? length == 1
        // 십의 자리 인가? length == 2
        // 백의 자리 인가? length == 3
        // 천의 자리 인가? length == 4
        
        // 길이를 알기 위해서 
        // length 사용 -- (int)(Math.log10(sum)+1);
        
        length = (int)(Math.log10(sum)+1);
        
        if(length == 1) {
            
            System.out.println("YES");
            
        } else if(length == 2) {
            
            // 일의 자리와 십의 자리의 숫자가 같으면!?
            // "YES" 출력
            
            if((sum%10== (sum/10)) {
                System.out.println("YES");
            } else {
                System.out.println("NO");
            }
            
        } else if(length == 3) {
            
            // 일의 자리와 백의 자리의 숫자가 같으면!?
            // "YES" 출력
            
            if((sum%10== (sum/100)) {
                System.out.println("YES");
            } else {
                System.out.println("NO");
            }
            
        } else if(length == 4) {
            
            // 일의 자리와 천의 자리의 숫자와 십의 자리와 백의 자리의 숫자가 같으면!?
            // "YES" 출력 
            
            if( (sum%10== (sum/1000&& ((sum/10)%10== ((sum/100)%10)) {
                System.out.println("YES");
            } else {
                System.out.println("NO");
            }
        }
    }
    
    public static void main(String[] args) {
        
        new ReverseNumber();
        
    }
}
 
 
cs

93 DL

Develop Life