Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- list
- Medium
- leetcode
- tree
- 쉬움
- dfs
- easy
- Binary
- 문자열
- hash table
- HashTable
- two pointers
- 이진트리
- linked list
- 리트코드
- math
- sorting
- Python
- recursive
- 미디움
- binary tree
- backtracking
- 재귀
- binary search
- matrix
- Depth-first Search
- 중간
- DP
- Array
- string
Archives
- Today
- Total
부부의 코딩 성장 일기
LeetCode 9(Palindrome Number, Python) 본문
1. 문제 링크
Palindrome Number - LeetCode
Can you solve this real interview question? Palindrome Number - Given an integer x, return true if x is a palindrome, and false otherwise. Example 1: Input: x = 121 Output: true Explanation: 121 reads as 121 from left to right and from right to left. Ex
leetcode.com
2. 문제 설명
- 주어진 int를 뒤에서 앞으로 읽었을 때 같은 정수인 지 판단하는 문제
- 예시) int=121 이면 True, int=-121이면 False, int=10이면 False
3. 처음 풀이
- int를 str으로 바꾸면 거꾸로 나열하기 쉽고 원래 값과 비교하여 True, False 반환
- str(x)는 int인 x를 문자열로 바꾸어 주고 str(x)[::-1]은 str(x)를 역순으로 바꾼 문자열, 그 이유는 5. 배운점에서 자세히 설명
class Solution:
def isPalindrome(self, x: int) -> bool:
if str(x)==str(x)[::-1]:
return True
else:
return False
4. 다른 풀이
- 문자열로 바꾸지 않고 int 형태로 풀이 시도
- x=123=100+20+3이면 10으로 나눈 나머지는 3, 몫은 12
- 그 몫 12를 10으로 나눈 나머지는 2, 몫은 1이므로 순서대로 3, 2,1을 얻는다
- 이를 결과값에 더한 후 10배 하는 과정을 반복하면 300+20+1=321을 얻고 처음 값인 123과 같은지 비교
class Solution:
def isPalindrome(self, x: int) -> bool:
origin=x
if x< 0 : #음수면 False
return False
reverse=0
while x>0: #x를 10으로 나눈 몫이 0이 될 때까지 반복
reverse=10*reverse+x%10 #reverse를 10배 후 x를 10으로 나눈 나머지를 더하여 저장
x=x//10 #x를 10으로 나눈 몫으로 업데이트
if origin==reverse: #원래 값과 reverse가 같은지 판단
return True
else:
return False
5. 배운 점
- 문자열 인덱싱에서 역순으로 불러오거나 원하는 칸씩 점프하며 불러올 수 있다.
- 이를 응용하면 문자열을 역순으로 뒤집을 수 있음
str='abcd'
print(str[0]) #0번 : a
print(str[0:2]) #0번부터 2번 전까지 : ab
print(str[0:]) #0번부터 끝까지 : abcd
print(str[0:3:2]) #0번부터 3번 전까지 2칸씩 점프 : ac
print(str[-1]) #-1번째 즉 뒤에서 1번 : d
print(str[-1:-4:-2]) #-1번부터 -4번 전까지 역순으로 2칸씩 점프 : db
print(str[::-1]) #전체 역순 : dcba
'Algorithm > LeetCode' 카테고리의 다른 글
LeetCode 21(Merge Two Sorted Lists, Python) (0) | 2023.11.02 |
---|---|
LeetCode 20(Valid Parentheses, Python) (0) | 2023.11.01 |
LeetCode 14(Longest Common Prefix, Python) (1) | 2023.10.31 |
LeetCode 13(Roman to Integer, Python) (1) | 2023.10.30 |
LeetCode 1(Two Sum, Python) (0) | 2023.10.28 |