Palindrome Number

์ •์ˆ˜ X ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ •์ˆ˜ X ๊ฐ€ ํŒฐ๋ฆฐ๋“œ๋กฌ์ด๋ฉด True, ์•„๋‹ˆ๋ฉด False ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์‹œ์˜ค.

๋ฌธ์ œ ํ•˜๋‹จ์— ๋ณด๋ฉด ์ •์ˆ˜๋ฅผ String ์œผ๋กœ ์ปจ๋ฒ„ํŒ… ํ•˜์ง€ ์•Š๊ณ  ํ’€๋ผ๋Š” ๋ง์ด ์žˆ๋‹ค.


Palindrom

  • ํŒฐ๋ฆฐ๋“œ๋กฌ ์ด๋ž€ ์ˆซ์ž๋‚˜ ๋ฌธ์ž์—ด์„ ์•ž์—์„œ ์ฝ๋“ , ๋’ค์—์„œ ์ฝ๋“  ๋™์ผํ•œ ๊ฒฝ์šฐ ๋ฅผ ๋งํ•จ.

  • ์˜ˆ๋ฅผ ๋“ค์–ด:

    • ์ˆซ์ž 121-> ๋’ค์ง‘์–ด๋„ 121 ์ด๋ฏ€๋กœ ํŒฐ๋ฆฐ๋“œ๋กฌ์ž„.

    • ์ˆซ์ž 10 -> ๋’ค์ง‘์œผ๋ฉด 01 ์ด๋ฏ€๋กœ ํŒฐ๋ฆฐ๋“œ๋กฌ์ด ์•„๋‹˜.


๋ฌธ์ œ ๋ฐœ์ƒ

  • ํŒฐ๋ฆฐ๋“œ๋กฌ์„ ํ™•์ธํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ž‘์„ฑํ–ˆ์„ ๋•Œ, ์ˆซ์ž 10 ์ฒ˜๋Ÿผ ํŒฐ๋ฆฐ๋“œ๋กฌ์ด ์•„๋‹Œ ์ˆซ์ž๊ฐ€ ์ž˜๋ชป๋œ ์กฐ๊ฑด ์œผ๋กœ ์ธํ•ด ํŒฐ๋ฆฐ๋“œ๋กฌ์œผ๋กœ ํŒ์ •๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์—ˆ์Œ.

public boolean isPalindrome(int x) {
        
        int reversedHalf = 0;

        while(x > reversedHalf) {
            int lastDigit = x % 10;
            reversedHalf = reversedHalf * 10 + lastDigit;
            x /= 10;
        }

        return x == reversedHalf || x == reversedHalf /10;
    }

์œ„ ์ฝ”๋“œ์—์„œ๋Š” 10์ผ ๋•Œ True ๋ฅผ ๋ฐ˜ํ™˜ํ•จ.

์ด์ „ ์ฝ”๋“œ ํ๋ฆ„

  1. ์ˆซ์ž๋ฅผ ๋’ค์ง‘์€ ์ ˆ๋ฐ˜(reversedHalf )๋ฅผ ์ƒ์„ฑํ•จ.

  2. ์›๋ž˜ ์ˆซ์ž์˜ ์•ž๋ถ€๋ถ„(x )๊ณผ ๋’ค์ง‘ํžŒ ์ ˆ๋ฐ˜์„ ๋น„๊ตํ•˜์—ฌ ํŒฐ๋ฆฐ๋“œ๋กฌ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•จ.

  3. ์ง์ˆ˜ ์ž๋ฆฌ ์ˆซ์ž๋Š” num == reversedHalf ๋กœ ๋น„๊ตํ•˜๊ณ , ํ™€์ˆ˜ ์ž๋ฆฌ ์ˆซ์ž๋Š” ๊ฐ€์šด๋ฐ ์ˆซ์ž๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ๋น„๊ต(num == reversedHalf / 10 ) ํ•จ.

์ˆ˜์ • ์™„๋ฃŒํ•œ ์ฝ”๋“œ

 public boolean isPalindrome(int x) {

        if(x < 0 || (x % 10 == 0 && x != 0)){
            return false;
        }
        
        int reversedHalf = 0;

        while(x > reversedHalf) {
            int lastDigit = x % 10;
            reversedHalf = reversedHalf * 10 + lastDigit;
            x /= 10;
        }

        return x == reversedHalf || x == reversedHalf /10;
    }

Last updated

Was this helpful?