[LeetCode]

정답) class Solution: def reverseBits(self, n: int) -> int: res = 0 for _ in range(32): res = (res=1 return res 정답출처 문제) 문제출처 32비트의 정수가 주어졌을 때 그 정수의 비트들을 뒤집어 전환시키시오. 예시 1) n = 00000010100101000001111010011100 output = 964176192 (00111001011110000010100101000000) 예시 2) n = 11111111111111111111111111111101 output = 3221225471 (10111111111111111111111111111111) 제한) 인풋의 길이는 32입니다. 도전) 만약 이 함수가 계속해서 실행..
정답) class Solution: def titleToNumber(self, columnTitle: str) -> int: digit = len(columnTitle)-1 res = 0 for char in columnTitle: res += (ord(char)-64) * 26**digit digit -= 1 return res 문제) 문제출처 엑셀의 열을 상징하는 스트링 columnTitle이 주어졌을 때, 그 열과 상응하는 숫자를 다음과 같이 리턴하시오. A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ... 예시 1) columnTitle = "A" output = 1 예시 2) columnTitle = "AB" output = 28 예시 3) colum..
정답) class Solution: def majorityElement(self, nums: List[int]) -> int: count, res = 1, nums[0] for i in range(1, len(nums)): if nums[i] == res: count += 1 else: if count == 0: res = nums[i] count += 1 else: count -= 1 return res 문제) 문제출처 n개의 원소가 있는 배열 nums가 주어졌을 때 nums의 과반수 원소를 리턴하시오. 과반수 원소란 nums에 n / 2번 보다 더 많이 존재하는 원소를 가리킵니다. nums에는 항상 과반수 원소가 존재합니다. 예시 1) nums = [3, 2, 3] output = 3 예시 2) nu..
정답) class Solution: def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> Optional[ListNode]: rootA = headA rootB = headB while headA != headB: if headA: headA = headA.next else: headA = rootB if headB: headB = headB.next else: headB = rootA return headA 문제) 문제출처 2개의 링크드 리스트들이 존재합니다. 2개의 링크드 리스트들의 head 노드들 headA, headB가 주어졌을 때 이 두 리스트들이 만나는 지점의 노드를 리턴하시오. 만약 2개의 리스트들에 교차점이 존재하지 않는다면..
정답) class Solution: def hasCycle(self, head: Optional[ListNode]) -> bool: if not head: return False tortoise, hare = head, head while tortoise and hare: if not hare.next: return False tortoise = tortoise.next hare = hare.next.next if tortoise == hare: return True 문제) 문제출처 head (주어진 linked list의 헤드 노드)가 주어졌을 때, head의 linked list에 사이클이 존재하는지 확인하시오. 노드의 next를 따라 계속 선형했을 때 linked list에 이미 존재했던 노드로 계..
정답) class Solution: def singleNumber(self, nums: List[int]) -> int: firstInt = nums[0] for i in range(1, len(nums)): firstInt ^= nums[i] return firstInt 문제) 문제출처 적어도 한 개의 정수가 존재하는 배열 nums가 주어졌을 때 nums의 원소들은 하나의 원소를 제외하고 2번씩 나타납니다. 한 번 밖에 나타나지 않는 한 개의 정수를 구하시오. 단, O(n) 시간 복잡도와 O(1) 공간 복잡도를 가진 정답을 제출하시오. 예시 1) nums = [2, 2, 1] ouptut = 1 예시 2) nums = [4, 1, 2, 1, 2] output = 4 예시 3) nums = [1] out..
정답) class Solution: def isPalindrome(self, s: str) -> bool: left = 0 right = len(s)-1 while left < right: if s[right].isalnum() and s[left].isalnum(): if s[right].lower() != s[left].lower(): return False left += 1 right -= 1 elif not s[left].isalnum(): left += 1 elif not s[right].isalnum(): right -= 1 return True 문제) 문제 출처 팰린드롬 (회문)은 거꾸로 읽어도 똑같은 문장을 뜻합니다. 이 문제에서는 대문자들을 전부 소문자 취급하고 알파벳과 숫자를 제외한 문..
정답) class Solution: def maxProfit(self, prices: List[int]) -> int: # 0번째 가격을 저장 buy = prices[0] profit = 0 for i in range(1, len(prices)): # 만약 다른 가격이 더 비싸다면 현재 수익과 비교 후 # 현재 수익보다 더 크다면 profit을 업데이트 if prices[i] > buy: profit = max(prices[i] - buy, profit) # 만약 다른 가격이 더 싸다면 사는 가격을 업데이트 else: buy = prices[i] return profit 문제) 문제출처 i번째 날의 주식 가격을 알려주는 배열 prices가 주어집니다. 당신은 하루를 정해 주식은 산 이후 미래에 팔아 최대..
정답) class Solution: def generate(self, numRows: int) -> List[List[int]]: # 규칙성이 없어 그냥 리턴하는 경우 if numRows == 1: return [[1]] if numRows == 2: return [[1], [1, 1]] # 초기 세팅 res = [[1], [1, 1]] # Recursive Function def helper(res, num): # Base Case if num < 3: return # Recursive Call helper(res, num-1) # 새로운 리스트 만드는 과정 start = [1] for i in range(num-2): start.append(res[-1][i] + res[-1][i+1]) start...
정답) class Solution: def sortedArrayToBST(self, nums: List[int]) -> Optional[TreeNode]: # Recrusive Func def helper(l, r): # Base Case if l > r: return None # Recursive Calls m = (l+r) // 2 root = TreeNode(nums[m]) root.left = helper(l, m-1) root.right = helper(m+1, r) return root return helper(0, len(nums)-1) 정답출처: NeetCode 문제) 문제출처 정수 배열 nums는 오름차순으로 정렬되어 있습니다. 이 배열을 height balanced BST(Binary ..
위대한먼지
'[LeetCode]' 카테고리의 글 목록 (8 Page)