[Leetcode] 9. Palindrome Number
Algorithm2021. 7. 19. 21:17
반응형
Identifying the Problem
가운데 숫자를 중심으로 양끝의 숫자가 대칭을 이루는지 확인하는 문제
예를 들면 121 같은 경우 2를 기준으로 1이 대칭을 이루지만 123 같은 경우는 그렇지 않다.
단 음수일 경우 false 를 return 한다.
제한조건은 다음과 같다.
- -2^31 <= x <= 2^31 - 1
Organizing thoughts
7번 문제 (숫자 뒤집어서 리턴) 하는 문제에서 x와 answer 과 똑같은지 판단해서 푸는 방법도 생각해봤지만
코드가 너무 복잡한 관계로 배열을 사용해 푸는 방법을 mainidea로 채택했다.
<Main idea>
음수일 경우 리턴하고, 정수를 배열 형태로 쪼개고 처음과 끝을 비교하는 방식이다.
0. 제한조건에 따른 x값의 최대 자리수는 12자리이므로 크기가 12인 배열을 선언한다.
1. 모든 자리수의 숫자를 추출 후 배열에 입력한다.
1-1 자리수를 파악한다.
1-2 숫자를 추출하고, 자리 수를 파악한다.
2. 양끝을 비교한다. 홀수 짝수 상관없이 n/2 번 반복하면 된다. (정수형에서 5/2 = 2)
2-1 비교 시 다를 경우 flag에 1을 대입한다.
Sourcecode
bool isPalindrome(int x){
int num[12] = {0,};
long long int n=0,temp=x; //n은 자릿수, temp는 자릿수 구할 때 사용할 x 값
bool flag = true; //다를 경우를 판단할 flag
long long int X = x; //제한 조건에 맞게 long long int 를 사용함
if(x<0) flag = false; //음수는 입구 컷!
else if (x>9) // 한 자리수는 무조건 true를 return 하게끔
{
while(temp !=0)
{
num[n] = temp%10; //1-1번
temp /=10; //1-2번
n++;
}
for(int i=0; i<n/2; i++) //2번
{
if(num[i] != num[n-1-i]) //2-1번
flag = false;
}
}
return flag;
}
Mistake
없음
New things learned
- 많은 test case 들이 있어 처음 생각을 정리하는 과정에서 가능한 모든 경우의 수를 생각하고
코딩하는 과정이 중요한 것 같다.
반응형
'Algorithm' 카테고리의 다른 글
[Leetcode] 13. Roman to Integer (1) | 2021.07.20 |
---|---|
[Leetcode] 20. Vaild Parentheses (0) | 2021.07.20 |
[Leetcode] 7. Reverse Integer (1) | 2021.07.18 |
[Leetcode] 1. Two Sum (0) | 2021.07.18 |
[LeetCode] 0. 시작에 앞서 (2) | 2021.07.18 |
댓글()