본문 바로가기

반응형

leetcode

(44)
[리트코드] 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의 인덱스가 모두 달라야 한다. 같은 인덱스를 참조하여 넣은 답일 경우 오답이 된다. 입출력 ..
[리트코드] Two Sum(python) 리트코드, Two Sum_두 개의 합 문제 1. 주어진 정수의 배열 nums와 정수 target에 대해 더해서 target이 되는 두 개의 숫자 인덱스를 반환하라. 2. 각 입력에 대해서는 오직 하나의 정답만이 존재하고, 하나의 원소를 두 번 사용할 수 없다. 3. 정답은 어떤 순서로 반환되어도 상관 없다. 입출력 형태 - 예시 1번 - nums에 입력이 [2, 7, 11, 15] target이 9로 주어졌다. - 문제 조건에 따라 nums에서 합이 9가 되는 원소의 인덱스를 반환하면 된다. - 2와 7을 더했을 때 9가 되므로 2의 인덱스인 0과 7의 인덱스인 1을 반환하면 된다. - 예시 3번 - nums = [3, 3], target = 6 - 문제 조건 2에 의해 동일한 원소를 두 번 사용하면 안..
[리트코드] Group Anagrams(python) 리트코드, Group Anagrams_그룹 애너그램 TL;DR 문제에서 주어진 조건을 구현할 수 있는지 python의 자료형인 dictionary를 활용할 수 있는지 문제 분석 1. 주어진 문자열에 대해서 같은 애너그램을 가진 문자열끼리 묶어야 한다. 2. 순서에 상관없이 정답을 반환하면 된다. 3. 애너그램은 문자열을 이루고 있는 문자를 재배치하여 만들 수 있는 서로 다른 문자열을 의미한다. - 1 ~ 2 : 해결해야 하는 문제와 출력에 대한 조건을 설명하고 있다. - 3 : 애너그램에 대한 내용을 설명하고 있다. 자세한 내용은 입출력 형태에서 살펴본다. 입출력 형태 - strs : 여러 개의 문자가 들어 있는 리스트가 주어진다. - output : 애너그램끼리 묶은 리스트를 반환한다. - strs에서..