본문 바로가기

반응형

Python

(88)
[리트코드] 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의 원소보다 앞서 ..
[리트코드] Plus One(python) 리트코드, Plus One_1 더하기 TL;DR 해결해야 하는 문제를 구현할 수 있는지 문제 분석 1. 비어 있지 않은 음수가 아닌 정수가 주어지는 10진수 숫자가 저장된 리스트로 구성된 수에 1을 더하라. 2. 가장 큰 자리수의 수가 가장 처음에 저장되고, 각 원소들은 단일 숫자를 포함하고 있다. 3. 0만 있는 경우를 제외하고는 가장 처음에 0이 오지 않는다고 가정한다. - 1 : 해결해야 하는 문제 조건에 대해 설명하고 있다. - 2 : 리스트의 가장 앞쪽부터 가장 큰 자릿수의 숫자를 나타낸다. 각 자릿수의 숫자는 10 미만의 정수이다. - 3 : 리스트이 [0]으로 주어지는 경우를 제외하고, 0이 리스트의 가장 앞, 즉 가장 큰 자릿수 위치에 오면 안된다. 입출력 형태 - digits : 10 미..
[리트코드] Palindrome Linked List(python) 리트코드, Palindrome Linked List_연결리스트 팰린드롬 TL;DR 연결 리스트(Linked List)를 활용하여 팰린드롬 문제를 해결할 수 있는지 문제 분석 1. 주어진 연결 리스트 head가 팰린드롬일 경우 true를 반환하여라. - 1 : 해결해야 하는 문제에 대해서 말하고 있다. 특이한 점은 연결 리스트로 자료형이 주어져 있다는 것이다. 입출력 형태 - 예시에서는 리스트 형태로 입력이 주어지지만, 입력은 연결 리스트 형태로 주어진다. class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next - val에는 해당하는 노드의 값이 주어지고, next에는 연결된 다음 연결 리스트가 주어진다. -..
[리트코드] Best Time to Buy and Sell Stock(python) 리트코드, Best Time to Buy and Sell Stock_주식을 사고팔기 가장 좋을 때 TL;DR 주어진 배열을 순회하며 문제의 조건을 구현할 수 있는지 문제 분석 1. i번째 날 주어진 주식의 가격이 담긴 배열 prices가 주어진다. 2. 가장 주식이 쌀 때 구매하고 싶고, 미래에 가장 값이 비쌀 때 주식을 판매하고 싶다. 3. 그 때의 최대 수익을 반환하라. 만약 수익을 창출할 수 없다면 0을 반환하라. 입출력 형태 - 일 별 주식의 가격이 담긴 배열 prices가 주어진다. - 예시 1 : - 주식이 가장 저렴한 1일때 사서, 그 이후 미래에 가장 비쌀 때인 6일 때 팔면 최대 수익인 5를 얻을 수 있다. - 예시 2: - 어느 시점에 주식을 사던, 수익을 창출할 수 없다. 따라서 0을..
[리트코드] Product of Array Except Self(python) 리트코드, Product of Array Except Self_자기 자신을 제외한 배열 곱셈 TL;DR 문제 조건에 따라 배열을 활용하여 문제를 풀 수 있는지 문제 분석 1. 주어진 정수 배열 nums에서 각 원소를 제외한 나머지 원소들의 곱으로 이루어진 배열을 반환한다. 2. 숫자들은 32비트 정수로 한정된다. 3. 시간 복잡도가 O(n)이어야 하며, 나머지 연산을 활용하면 안된다. - 1 : 해결해야 하는 문제 조건에 대해서 말하고 있다. - 2 : 문제 자체적으로 값의 상-하한을 주고 있다. 파이썬에서는 크게 신경쓰지 않아도 된다. - 3 : 문제의 제약 조건을 말하고 있다. 이 부분이 굉장히 풀이를 하는데 어렵게 다가왔다. 입출력 형태 - nums : 정수 배열 nums가 주어진다. - 각 원소를..
[리트코드] Array Partition 1(python) 리트코드, Array Partition 1_배열 분할 TL;DR 문제에 원하는 조건에 맞게 배열을 조작할 수 있는지 문제 분석 1. 길이가 2n인 정수 배열 nums가 주어진다. 2. nums에서 만들 수 있는 n개 쌍에서 각 쌍의 최소값의 합이 최대가 될 때의 값을 반환한다. - 1 ~ 2 : 해결해야 하는 문제 조건에 대해서 말하고 있다. 입출력 형태를 통해 어떤 문제인지 더 잘 이해할 수 있다. 입출력 형태 - nums : 정수 배열이 주어진다. - 예시 1 - 만들 수 있는 쌍의 모든 경우는 explanation에서 보이는 바와 같다. - 각 쌍에서 최소값의 합이 최대가 되는 경우는 3번 (1, 2), (3, 4)로 만들었을 때이다. - 예시 2 - 만들 수 있는 쌍 중 쌍의 최소값의 합이 최대가..
[리트코드] 3Sum(python) 리트코드, 3Sum_세 수의 합 TL;DR 투 포인터(two pointer)를 활용한 배열 문제 문제 분석 1. 주어진 숫자 배열에서, 세 수를 더해서 0이 되는 세 수를 배열에 담아 반환하라. 2. 단, 이 때, 세 수의 인덱스가 같으면 안된다.(i != j, i != k, j != k) 3. 동일한 세 수의 쌍이 배열에 담기면 안 된다. - 1 ~ 2 : 해결해야 하는 문제에 대해서 설명하고 있다. - 3 : 문제 해결 시 주의사항에 대해서 설명하고 있다. - 예를 들어, [0, 0, 0, 0, 0, 0]이 주어졌을 경우 [[0, 0, 0], [0, 0, 0]]과 같이 저장이 되어야 한다. - 이 때, 각 0의 인덱스가 모두 달라야 한다. 같은 인덱스를 참조하여 넣은 답일 경우 오답이 된다. 입출력 ..
[리트코드] Reorder Data in Log Files(python) 리트코드, Reorder Data in Log Files_로그 파일 데이터 재정렬 TL;DR 문자열 정렬을 할 수 있는지 문제 분석 1. 기록의 첫 번째 글자는 식별자이다. 2. 영어 소문자로 구성된 문자 기록과 숫자로만 구성된 숫자 기록 두 가지 종류가 있다. 3. 문자 기록은 숫자 기록보다 먼저 와야 한다. 4. 문자 기록은 사전순으로 정렬되며, 만약 같다면 식별자를 사전순으로 정렬해야 한다. 5. 숫자 기록은 입력된 순서대로 정렬된다. - 3 ~ 4 : 문자 기록을 처리해야 하는 방법을 명시하고 있다. 문자 기록은 사전순으로 정렬되어야 하며, 같을 경우는 기록의 가장 처음에 있는 식별자를 사전 순으로 정렬한다. - 5 : 숫자 기록은 입력 순서대로 정렬한다. 입출력 형태 - 예제 1에서 입력은 5개..