본문 바로가기
알고리즘

[LeetCode/JAVA] 9. Palindrome Number

by 상후 2021. 8. 5.
728x90
반응형

https://github.com/ROUTINE-STUDY/Algorithm

알고리즘 스터디를 진행하고 있습니다.
초보들로 구성되어있으며, 열심히 풀어보고 풀이 방식을 공유하고 피드백을 해주는 스터디입니다.
참여 문의는 댓글 혹은 GitHub 주소를 참고해주세요.

문제 출처 : https://leetcode.com/problems/palindrome-number/

출처 : LeetCode

문제 설명
정수 x가 주어지고, 해당 정수를 뒤집어도 동일한 값이면 true, 아니면 false를 반환하세요.
즉, 거꾸로 해도 같은지 판단하라는 문제입니다.
풀이 방법
다양한 방법들로 풀어봤습니다.

1. 연산을 통한 회문 생성 후 비교, 연산 전 음수는 예외처리
2. StringBuilder 객체의 reverse 메서드 활용
3. String으로 변환 후 머리와 꼬리의 문자를 하나씩 비교하는 방법
내 코드(JAVA)

 

// 1. 연산을 통한 방법
public boolean isPalindrome(int x) {
    if(x < 0) return false;

    int originNumber = x;
    int revertedNumber = 0;

    while(originNumber > 0) {
        revertedNumber = revertedNumber * 10 + originNumber % 10;
        originNumber /= 10;
    }

    return x == revertedNumber;
}

// 2. StringBuilder reverse 메서드 활용
public boolean isPalindrome(int x) {
    String str = String.valueOf(x);
    StringBuilder sb = new StringBuilder(str);
    
    return sb.reverse().toString().equals(str) ? true : false;
}

// 3.양 끝값 비교하는 방법
public boolean isPalindrome(int x) {
    String str = String.valueOf(x);
	
    // 양 끝값 비교이므로 절반만 반복
    for(int i=0; i<str.length()/2; i++) {
        char head = str.charAt(i);
        char tail = str.charAt(str.length()-1-i);

        if(head != tail) return false;
    }

    return true;
}

 

스터디 피드백 

 

Stack을 활용해서 거꾸로 뒤집은 방법이 기억에 남습니다.

 

난이도도 어렵지 않고 다양한 풀이 방법을 생각해볼 수 있는 좋은 문제 같습니다.

728x90
반응형

댓글