반응형
블로그 이미지
개발자로서 현장에서 일하면서 새로 접하는 기술들이나 알게된 정보 등을 정리하기 위한 블로그입니다. 운 좋게 미국에서 큰 회사들의 프로젝트에서 컬설턴트로 일하고 있어서 새로운 기술들을 접할 기회가 많이 있습니다. 미국의 IT 프로젝트에서 사용되는 툴들에 대해 많은 분들과 정보를 공유하고 싶습니다.
솔웅

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

카테고리

Leetcode - 9. Palindrome Number - Easy

2022. 8. 6. 18:41 | Posted by 솔웅


반응형

오늘의 문제는 9. Palindrome Number 입니다.
앞으로 해도 뒤로 해도 똑같은 우병우 가 아니라
앞으로 해도 뒤로 해도 똑같은 숫자를 구별하라는 문제 입니다.


제가 만든 스크립트는 아래와 같습니다.

class Solution {
public boolean isPalindrome(int x) {
boolean returnValue = true; // 일단 리턴 값을 담을 변수를 만들고 초기값은 true로 설정한다.
String temp = Integer.toString(x); // 나중에 charAt을 사용할 예정이므로 int 입력값 을 스프링으로 변환한다.

int left = 0; // left는 0
int right = temp.length()-1; // right는 입력값 길이 -1

while(left < right) { // left 가 right 보다 작을 때까지 while 문 실행
if(temp.charAt(left++) != temp.charAt(right--)){ // 입력값의 왼쪽 값과 오른쪽 값이 다를 경우 if 문 실행
returnValue = false; // 다를 경우 리턴값은 false 가 된다.
}
}

return returnValue; // 리턴값을 리턴한다.
}
}

다른 사람이 만든 스크립트를 보자.

class Solution {
    public boolean isPalindrome(int x) {
        String s1 = Integer.toString(x);
        //passing x in the below statement won't work(idk why)
        StringBuilder s2 = new StringBuilder(s1).reverse();
        return s2.toString().equals(s1);
        //s2.toString() == s1 -> compares string references --> hence use .equals()
    }
}

내꺼 보다 훨씬 간단하다.
이 사람은 StringBuilder의 reverse 함수를 사용했다.
원래 입력값과 reverse한 값이 같으면 true 다르면 false를 리턴한다.

Python 으로는 아래와 같이 할 수 있다.

class Solution:
    def isPalindrome(self, x: int) -> bool:
        s = str(x)
        return s == s[::-1]

마지막 줄이 좀 이해가 안기는데......

list[<start>:<stop>:<step>]
  • start (optional)- Starting index value where the slicing of the object starts. Default to 0 if not provided.
  • stop – Index value until which the slicing takes place.
  • step (optional) – Index value steps between each index for slicing. Defaults to 1 if not provided.

 

문법은 이렇다. 그리고 이렇게 작동한다.

 

>>> a = '1234'
>>> a[::-1]
'4321'

Step이 -1 이면 reverse를 하기된다.

 

a = '1234'
print a[::2]
13

스텝이 2 이면 한 개 건너 뛴 값이 선택 된다.

 

a = '1234'
print a[3:0:-1]
432

이렇게 되면 세번째 까지만 리버스 된다.

 

a = [1, 2, 3, 4, 5, 6, 7, 8] print(a[:5]) ==> output 1,2,3,4,5

 

 

a = [1, 2, 3, 4, 5, 6, 7, 8]
print(a[3:])

Output: [4, 5, 6, 7, 8]

 

a = [1, 2, 3, 4, 5, 6, 7, 8]
print(a[3:5])

Output: [4, 5]

 

a = [1, 2, 3, 4, 5, 6, 7, 8]
print(a[3:7:2])

Output: [4, 6]

 

a = [1, 2, 3, 4, 5, 6, 7, 8]
print(a[:5])    # prints [1, 2, 3, 4, 5]
print(a[2:])    # prints [3, 4, 5, 6, 7, 8]
print(a[2:5])    # prints [3, 4, 5]
print(a[2:7:2])    # prints [3, 5, 7]

You can index the last index of a sequence by using  -1 :

a = [1, 2, 3, 4, 5, 6]
print(a[-1])    # prints 6
print(a[2:-1])    # prints [3, 4, 5]

You can flip a sequence by using the  [::-1] slice notation:

a = [1, 2, 3, 4, 5, 6]
print(a[::-1])    # prints [6, 5, 4, 3, 2, 1]

 

 

 

반응형