LeetCode/Grind169 60

300. Longest Increasing Subsequence ★★★★★★★★★★

300. Longest Increasing Subsequence https://youtu.be/cjWnW0hdF1Y?si=DCsJr16gb5K6nTle class Solution: def lengthOfLIS(self, nums: List[int]) -> int: """ n = len(nums) dp = [0] * n, nums 개수만큼 우선, 초기값으로 dp[n-1] = 1 왜냐, 마지막은.. 자기자신.. dp[m] = max(1, 1 + dp[m+1] if nums[m] 이 문제는 "Longest Increasing Subsequence (LIS)", 즉 최장 증가 부분 수열 문제입니다. 아래에서..

LeetCode/Grind169 2024.12.29

22. Generate Parentheses ★★★★★

22. Generate Parentheses https://youtu.be/s9fokUqJ76A?si=ERC4z90YXz3-fkws class Solution: def generateParenthesis(self, n: int) -> List[str]: # stack: 현재까지 생성된 괄호를 저장하는 스택 # res: 유효한 괄호 조합을 저장할 결과 리스트 stack = [] res = [] # 백트래킹 함수 정의 def backtrack(openN, closedN): # openN: 열린 괄호 '('의 개수 # closedN: 닫힌 괄호 ')'의 개수 # 베이스 케..

LeetCode/Grind169 2024.12.27

[Trees: Trie] 211. Design Add and Search Words Data Structure ★★★★★

211. Design Add and Search Words Data Structure https://youtu.be/BTf05gs_8iU?si=Oj37OnsdmiSq4Yfd class TrieNode(): def __init__(self): self.children = {} # a: TrieNode self.word = False # 현재 노드가 단어의 끝인지 표시class WordDictionary: def __init__(self): self.root = TrieNode() # Trie의 루트 노드 초기화 def addWord(self, word: str) -> None: cur = self.root # 루트 노드부터 시작 ..

LeetCode/Grind169 2024.12.26

9. Palindrome Number ☆

9. Palindrome Number 내 코드.. 이것도 맞음class Solution: def isPalindrome(self, x: int) -> bool: # 숫자가 Palindrome 인지 # 음수면 무조건 아님 if x https://youtu.be/yubRKwixN-U?si=w6hr9gibc6M_HInC class Solution: def isPalindrome(self, x: int) -> bool: # 음수는 무조건 팰린드롬이 될 수 없음 if x = 10 * div: div *= 10 # div를 10씩 곱해가며 x보다 작은 최대 10^n 값을 찾음 # 팰린드롬 확인..

LeetCode/Grind169 2024.12.18

Bits: 190. Reverse Bits ☆★★

190. Reverse Bits 내 코드class Solution: def reverseBits(self, n: int) -> int: # Reverse bits of a given 32 bits unsigned integer. # 비트 반대로 res = 0 while n: # n 이 0 되면 끝남 res = n & 1 # 제일 오른쪽 비트가 1인지 체크 # n 은 2로 나누어주고 n = n>>1 # res 는 반대로 res = res 당신 코드의 아이디어는 거의 맞습니다만, 2가지 주요 문제가 있어 정답이 안 나옵니다. 아래에 정리해 드릴게요.❗ 문..

LeetCode/Grind169 2024.12.17

19. Remove Nth Node From End of List ☆★★★★

19. Remove Nth Node From End of List ✅ 올바른 풀이 (Two Pointer 방식 권장)아래는 리버스 없이 깔끔하게 해결할 수 있는 two pointer 방식입니다:class Solution: def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]: # 더미 노드 설정 (head 제거될 경우 대비) dummy = ListNode(0, head) fast = slow = dummy # fast를 n+1만큼 먼저 이동시켜서 간격 만들기 # 왜? n 이동하고. dummy.next 부터 시작이니 1도 더함 ..

LeetCode/Grind169 2024.12.09