개발인생/Altorithm

[알고리즘 기초 100제] 17. 팰린드롬(Palindrome)

forri 2025. 3. 14. 20:38

✔️문제

- 입력된 수가 팰린드롬인치 판별하시오.
- 입력 : 12321
- 정답: True


📍정답

package _17_palindrome;

public class Main {
  
  public static void main(String[] args) {

    String n = "12321";

    int len = n.length();
    boolean flag = true;

    for (int i = 0; i < len/2; i++) {
        if (n.charAt(i) != n.charAt(len-i-1)) {
            flag = false;
        }
    }
    System.out.println(flag);
  }
}
package _17_palindrome;

import java.util.Scanner;

public class Main2 {

  public static void main(String []args){

    Scanner in = new Scanner(System.in);
    System.out.print("입력: ");

    int n = in.nextInt();

    int n1 = n; // 원래 숫자를 보존하기 위해 n1에 복사
    int n2 = 0; // 뒤집은 숫자를 저장할 변수, 초기값은 0
    
    while(n1 > 0){
        n2 = n2 * 10 + n1 % 10; //기존에 뒤집힌 숫자에 현재 자리 숫자를 추가 (자리수 조정)
        n1 /= 10; //n1에서 마지막 자리를 제거
    }

    // 원래 숫자 n과 뒤집은 숫자 n2가 같으면 Palindrome
    if(n == n2){
        System.out.print("True");
    }
    else{
        System.out.print("False");
    }
  }
}

 

왜 n2 * 10을 해야 할까?

  • n1 % 10 → 현재 n1의 마지막 자리 숫자를 가져옴
  • n2 * 10 → 기존 n2를 한 자리 수 앞으로 이동(기존 자리 숫자를 왼쪽으로 이동)
  • + n1 % 10 → 새로운 숫자를 맨 끝에 추가