leetcode (44) 썸네일형 리스트형 [리트코드] Valid Parentheses(python) 리트코드, Valid Parentheses_유효한 괄호 TL;DR 스택(stack) 문제 분석 1. 주어진 괄호 문자('(', ')', '{', '}', '[', ']')를 포함하고 있는 문자열 s가 유효한지를 판별해야 한다. 2. 열린 괄호는 같은 종류의 닫힌 괄호와 붙어있어야 한다. 3. 열린 괄호와 같은 종류의 닫힌 괄호는 정확한 순서로 되어 있어야 한다. - 1 : 해결해야 하는 문제에 대해서 설명하고 있다. - 2 ~ 3 : 같은 종류의 열린 괄호와 닫힌 괄호로만 이루어져있는 문자열이 올바른 괄호 문자라는 것을 설명하고 있다. 입출력 형태 - 입출력 예시를 통해 문제에서 말하는 유효한 괄호문자의 조건을 확인할 수 있다. - 예시 1과 예시 2는 서로 같은 종류의 괄호들이 올바르게 잘 배치되어 있.. [리트코드] Odd Even Linked List(python) 리트코드, Odd Even Linked List_홀짝 연결리스트 TL;DR 연결리스트(Linked List)를 활용할 수 있는지 문제 분석 1. 주어진 연결리스트에 대해서 홀수 인덱스끼리 묶은 연결리스트와 짝수 인덱스끼리 묶은 연결리스트로 재정렬된 연결리스트를 반환하라. 2. 첫번째 노드부터 홀수, 두번째 노드부터 짝수로 가정한다. 3. 홀수와 짝수 내에서 입력에 주어진 순서를 유지해야 한다. 4. O(1)의 공간복잡도와 O(n)의 시간복잡도로 해결해야 한다. - 1 : 해결해야 하는 문제 조건에 대해 설명하고 있다. - 2 ~ 3 : 세부 조건에 대해서 말하고 있다. 입출력 형태 파트에서 이 조건에 대해서 살펴본다. - 4 : 문제 해결 시 만족해야 하는 조건에 대해서 설명하고 있다. 리스트와 같은 변.. [리트코드] Swap Nodes in Pairs(python) 리트코드, Swap Nodes in Pairs_인접 노드 바꾸기 TL;DR 연결리스트(LinkedList)를 활용할 수 있는지 문제 분석 1. 주어진 연결 리스트에 대해서 인접한 노드들을 바꾸고, 바뀐 연결 리스트를 반환한다. 2. 각 노드의 값을 바꾸어 문제를 해결하면 안 된다. - 1 : 해결해야 하는 문제에 대해서 설명하고 있다. 노드들을 둘씩 짝지어 짝지은 노드를 서로 바꾼 연결리스트를 반환해야 한다. - 2 : 제한조건이다. 연결리스트의 노드가 갖고 있는 값을 바꾸어 문제를 해결하면 안 된다. 입출력 형태 - 주어진 연결리스트의 노드를 짝지으면 1 - 2, 3 - 4와 같이 짝을 지을 수 있다. - 짝지은 노드들을 맞바꾼 연결리스트를 반환하면 된다. 풀이 # Definition for singl.. [리트코드] Add Two Numbers(python) 리트코드, Add Two Numbers_두 수 더하기 TL;DR 연결 리스트(Linked List) 문제를 해결할 수 있는지 문제 분석 1. 음수가 아닌 정수를 표현하는 비어 있지 않은 두 개의 연결 리스트가 주어진다. 2. 숫자들은 연결 리스트에 거꾸로 삽입되어 있고, 각 노드는 자리수를 포함하고 있다. 3. 두 숫자를 더한 결과를 링크드 리스트에 담아 반환한다. 4. 0 하나만 있는 것을 제외하고 0으로 시작하는 경우는 없다. - 1 ~ 4 : 해결해야 하는 문제 조건에 대해서 설명하고 있다. 두 개의 숫자가 역으로 연결 리스트에 저장되어 있다는 것에 주목해야 한다. 입출력 형태 - 예시 1 - L1이 나타내는 수는 342, L2가 나타내는 수는 465이다. - 두 수를 더한 결과인 807을 연결 리.. [리트코드] Happy Number(python) 리트코드, Happy Number_해피 넘버 TL;DR 구현(Implementation) 문제 분석 1. 주어진 숫자 n이 해피 넘버인지 아닌지 판별하는 알고리즘을 작성하라. 2. 해피 넘버는 아래와 같은 과정을 거쳐 얻게 된다. 2-1. 주어진 숫자의 각 자리수를 제곱하여 더한다. 2-2. 2-1 과정을 1이 될때까지 반복하거나, 1을 포함하고 있지 않는 주기로 반복된다. 3. 해피 넘버라면 True를, 아니라면 False를 반환한다. - 1, 3 : 해결해야 하는 문제에 대해서 말하고 있다. - 2 : 알고리즘 구현에 필요한 해피 넘버에 대해서 설명하고 있다. 입출력 형태 - 주어진 숫자 n에 대해서 각 자리수를 제곱하여 더한 숫자를 만든다. - 만들어진 숫자에 대해서 1이 나올 때까지 반복한다. 풀.. [리트코드] Reverse Linked List(python) 리트코드, Reverse Linked List_연결 리스트 뒤집기 TL;DR 연결 리스트(Linked List) 문제를 해결할 수 있는지 문제 분석 1. 주어진 연결 리스트를 뒤집은 리스트를 반환하라. 입출력 형태 - 입력으로 주어진 연결 리스트를 뒤집은 연결 리스트를 반환하면 된다. 풀이 class Solution: def reverseList(self, head: ListNode) -> ListNode: if not head: return None slow, rev = head, None while slow: rev, rev.next, slow = slow, rev, slow.next return rev - https://firsteast.tistory.com/35 에서 러너(Runner) 기법을 활.. [리트코드] Merge Two Sorted Lists(python) 리트코드, Merge Two Sorted Lists_정렬된 두 개의 리스트 병합 TL;DR 연결 리스트(Linked list)를 문제 조건에 맞게 구현할 수 있는지 문제 분석 1. 두 개의 정렬된 리스트를 병합하고, 정렬된 리스트의 형태로 반환한다. 2. 반환되는 리스트는 주어진 두 개의 함께 리스트를 엮어(splicing) 만들어야 한다. - 1 : 해결해야 하는 문제에 대해서 말하고 있다. - 2 : 반환 조건에 대해서 말하고 있다. 별도의 연결 리스트를 선언하지 않고, 두 개의 연결 리스트를 하나의 정렬된 연결 리스트로 만들어야 한다. 입출력 형태 - 예시에는 배열처럼 주어졌지만 실제로는 연결 리스트로 구현되어 있다. - 두 개의 연결 리스트를 예시 1과 같이 오름차순으로 정렬된 하나의 연결 리스트.. [리트코드] Merge Sorted Array(python) 리트코드, Merge Sorted Array_정렬된 배열 병합 TL;DR 배열을 문제에 제시된 조건에 맞게 해결할 수 있는지 문제 분석 1. m과 n의 유효한 원소를 갖고 있는 비내림차순으로 정렬된 정수 배열 nums1와 nums2 2. nums1과 nums2를 nums1에 비내림차순으로 정렬하여 합쳐야 한다. 3. 정렬된 답은 nums1에 저장되어야 한다. 4. nums1은 m + n길이를 갖고 있으며 첫 번째, m개 만큼이 정렬의 대상이 되는 정수들이다. 5. nums2는 n길이를 갖고 있으며, n이 0이라면 무시한다. - 비내림차순(non-decreasing order) : 오름차순과는 다른 개념이다. nums1과 nums2에서 같은 원소가 있을 때는 nums1의 원소가 nums2의 원소보다 앞서 .. 이전 1 2 3 4 5 6 다음