ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • leetcode easy - Palindrome Number
    개발 나누고 더하기/코딩 테스트 2023. 7. 30. 15:26

    문제


    Given an integer x, return true if x is a palindrome, and false otherwise.

    Integer x가 주어졌을 때 이게 회문인지 검사하는 코드를 만들어야 한다.

    121은 거꾸로해도 121이라 true, -121은 거꾸로하면 121- 이라 false, 10은 거꾸로하면 01이라 false가 된다.

    palindrome은 회문이라는 뜻이며, 어떤 단어나 구를 거꾸로해도 원본과 같은 경우를 일컫는다.

    예를 들면 우영우, 기러기, 토마토, 스위스, 인도인, 별똥별과 같은 단어가 있다.

     

    예전에 모기업에 지원할때 코딩테스트 문제로도 나왔어서 쉬운 문제임에도 불구하고 리뷰해보았다.

     

    제약 사항


    -2의31승 -1 <= x <= 2의31승 -1

    int 범위에서 놀면 된다.

     

    해결


    변수로 받은 값에 대한 원본 버전 1개, 뒤집은 버전 1개를 준비하고, 반복으로 각 자리수 값을 비교하면 끝이다. 이때 비교한 결과가 true면 다음 자리수 검사를 이어하고, false라면 false를 리턴하고 프로그램을 종료시킨다.

    이 때 x가 음수이면 비교할 필요없이 false이므로 바로 false를 반환하고, 한자리수 정수도 역시 비교할 필요없이 true이므로 바로 true를 반환한다.

     

    String.toCharArray()로 배열에 저장해 놓는 대신 charAt()을 쓰면 메모리 공간 활용을 좀 더 개선시킬 수 있을 것이다.

    코드는 아래와 같다.

    public class S9_PalindromeNumber {
        public static void main(String[] args) {
            System.out.println("121 = " + isPalindrome( 121));
            System.out.println("-121 = " + isPalindrome(-121));
            System.out.println("10 = " + isPalindrome(10));
            System.out.println("32523 = " + isPalindrome(32523));
            System.out.println("9 = " + isPalindrome(9));
            System.out.println("0 = " + isPalindrome(0));
            System.out.println("4444 = " + isPalindrome(4444));
        }
    
        private static boolean isPalindrome(int x) {
            if (x < 0) {
                return false;
            }
            if (x < 10) {
                return true;
            }
            char[] numbers = String.valueOf(x).toCharArray();
            int half = numbers.length / 2;
            for (int i = 0; i <= half; i++) {
                if (numbers[i] != numbers[numbers.length-1-i]) {
                    return false;
                }
            }
            return true;
        }
    }

    내 PC에서 테스트하면 모든 케이스를 통과한다. 경곗값 검증도 필요한데, 숫자가 너무 크다...

    회문 테스트

    워낙 쉬운 문제라 상대 성적도 준수하게 나온편이다.

    leetcode에 제출 결과

    '개발 나누고 더하기 > 코딩 테스트' 카테고리의 다른 글

    leetcode easy - Two Sum  (0) 2023.06.14

    댓글

Designed by Tistory.