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 ๋ฅผ ๋ฐํํจ.
์ด์ ์ฝ๋ ํ๋ฆ
์ซ์๋ฅผ ๋ค์ง์ ์ ๋ฐ(
reversedHalf
)๋ฅผ ์์ฑํจ.์๋ ์ซ์์ ์๋ถ๋ถ(
x
)๊ณผ ๋ค์งํ ์ ๋ฐ์ ๋น๊ตํ์ฌ ํฐ๋ฆฐ๋๋กฌ ์ฌ๋ถ๋ฅผ ํ๋จํจ.์ง์ ์๋ฆฌ ์ซ์๋
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?