본문 바로가기

Coding Test/LeetCode57

[LeetCode] 20. Valid Parentheses [Python(파이썬)] '파이썬 알고리즘 인터뷰'를 보고 작성한 글입니다. 😀 문제 👉 1. 문제 (유효한 괄호) 괄호로 된 입력값이 올바른지 판별하라. 2. 풀이 스택을 이용한 풀이 3. 코드 (Python) 스택을 이용한 풀이 class Solution: def isValid(self, s: str) -> bool: dic = { ')' : '(', '}' : '{', ']' : '[' } stack = [] for c in s: if c not in dic: stack.append(c) elif not stack or stack.pop() != dic[c]: return False return not stack 결과 : 방.. 2021. 11. 23.
[LeetCode] 3. Longest Substring Without Repeating Characters [Python(파이썬)] '파이썬 알고리즘 인터뷰'를 보고 작성한 글입니다. 😀 문제 👉 1. 문제 (중복 문자 없는 가장 긴 부분 문자열) 중복 문자가 없는 가장 긴 부분 문자열의 길이를 출력하라. 2. 풀이 해시와 투 포인터를 이용한 풀이 부분 문자열의 처음과 끝에 포인터를 위치 중복이 없으면 끝을 오른쪽으로 이동 중복이 있을 경우 처음을 오른쪽으로 이동 3. 코드 해시와 투 포인터를 이용한 풀이 class Solution: def lengthOfLongestSubstring(self, s: str) -> int: ret, start = 0, 0 used = {} for idx, char in enumerate(s): if char in used and start 2021. 11. 23.
[LeetCode] 328. Odd Even Linked List [Python(파이썬)] '파이썬 알고리즘 인터뷰'를 보고 작성한 글입니다. 😀 문제 👉 1. 문제 (홀짝 연결리스트) 연결 리스트를 홀수 노드 다음에 짝수 노드가 오도록 재구성해라. 공간 복잡도 O(1), 시간 복잡도 O(n)에 풀이하라. 2. 풀이 반복문을 이용한 풀이 3. 코드 반복문을 이용한 풀이 # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def oddEvenList(self, head: ListNode) -> ListNode: #종료 조건 if not head: return None odd.. 2021. 11. 23.
[LeetCode] 234. Palindrome Linked List [Python(파이썬)] '파이썬 알고리즘 인터뷰'를 보고 작성한 글입니다. 😀 문제 👉 1. 문제 (팰린드롬 연결리스트) 연결리스트가 팰린드롬인지 확인하라. 2. 풀이 deque를 이용한 풀이 런너 기법을 이용한 풀이 3. 코드 deque를 이용한 풀이 # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next from collections import deque class Solution: def isPalindrome(self, head: ListNode) -> bool: # 종료 조건 if not head: return True que.. 2021. 11. 23.
[LeetCode] 206. Reverse Linked List [Python(파이썬)] '파이썬 알고리즘 인터뷰'를 보고 작성한 글입니다. 😀 문제 👉 1. 문제 (역순 연결리스트) 연결리스트를 뒤집어라. 2. 풀이 반복문을 이용한 풀이 3. 코드 반복문을 이용한 풀이 # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def reverseList(self, head: ListNode) -> ListNode: rev = None while head: tmp, head = head, head.next rev, rev.next = tmp, rev return rev 결과 .. 2021. 11. 23.
[LeetCode] 92. Reverse Linked List II [Python(파이썬)] '파이썬 알고리즘 인터뷰'를 보고 작성한 글입니다. 😀 문제 👉 1. 문제 (역순 연결리스트 II) 인덱스 left에서 right까지를 역순으로 만들어라. 인덱스 left은 1부터 시작한다. 2. 풀이 반복문을 이용한 풀이 start = left - 1, end = left left = 2, right = 4 s e s e s e 1->2->3->4->5 1->3->2->4->5 1->4->3->2->53. 코드 반복문을 이용한 풀이 # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution.. 2021. 11. 23.
[LeetCode] 24. Swap Nodes in Pairs [Python(파이썬)] '파이썬 알고리즘 인터뷰'를 보고 작성한 글입니다. 😀 문제 👉 1. 문제 (페어의 노드 스왑) 연결 리스트를 입력받아 페어(pair) 단위로 스왑하라. 2. 풀이 반복문을 이용한 풀이 재귀를 이용한 풀이 3. 코드 반복을 이용한 풀이 # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def swapPairs(self, head: ListNode) -> ListNode: if not head or not head.next: return head root = pre = ListNod.. 2021. 11. 23.
[LeetCode] 21. Merge Two Sorted Lists [Python(파이썬), JAVA(자바)] '파이썬 알고리즘 인터뷰'를 보고 작성한 글입니다. 😀 문제 👉 1. 문제 (두 정렬 리스트 병합) 정렬되어 있는 두 연결리스트를 합쳐라. 2. 풀이 반복문을 이용한 풀이 재귀를 이용한 풀이 3. 코드 (Python) 반복문을 이용한 풀이 # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode: head = tmp = ListNode(None) while l1 and l2:.. 2021. 11. 23.
[LeetCode] 2. Add Two Numbers [Python(파이썬)] '파이썬 알고리즘 인터뷰'를 보고 작성한 글입니다. 😀 문제 👉 1. 문제 (두 수의 덧셈) 역순으로 저장된 연결 리스트의 숫자를 더하라. 2. 풀이 + 연산을 이용한 풀이 리스트의 합이 10이 넘을 경우 다음 리스트의 연산에서 해당 값을 더한다. 3. 코드 +연산을 이용한 풀이 # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode: ret = head = ListNode.. 2021. 11. 23.