728x90
반응형
https://github.com/ROUTINE-STUDY/Algorithm
알고리즘 스터디를 진행하고 있습니다.
초보들로 구성되어있으며, 열심히 풀어보고 풀이 방식을 공유하고 피드백을 해주는 스터디입니다.
참여 문의는 댓글 혹은 GitHub 주소를 참고해주세요.
문제 출처 : https://leetcode.com/problems/palindrome-number/
문제 설명
정수 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
반응형
'알고리즘' 카테고리의 다른 글
[LeetCode/JAVA] 94. Binary Tree Inorder Traversal (0) | 2021.08.09 |
---|---|
[LeetCode/JAVA] 589. N-ary Tree Preorder Traversal (0) | 2021.08.07 |
[LeetCode/JAVA] 1614. Maximum Nesting Depth of the Parentheses (0) | 2021.08.03 |
[프로그래머스/JAVA] 신규 아이디 추천 (0) | 2021.07.29 |
[LeetCode/JAVA] 1877. Minimize Maximum Pair Sum in Array (0) | 2021.07.28 |
댓글