[Leetcode] 9. Palindrome Number

Algorithm|2021. 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  (0) 2021.07.20
[Leetcode] 20. Vaild Parentheses  (0) 2021.07.20
[Leetcode] 7. Reverse Integer  (0) 2021.07.18
[Leetcode] 1. Two Sum  (0) 2021.07.18
[LeetCode] 0. 시작에 앞서  (2) 2021.07.18

댓글()