본문 바로가기

반응형

개발/Algorithm

(98)
[리트코드] 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의 인덱스가 모두 달라야 한다. 같은 인덱스를 참조하여 넣은 답일 경우 오답이 된다. 입출력 ..
[리트코드] Trapping Rain Water(python) 리트코드, Trapping Rain Water_빗물 트래핑 TL;DR 투 포인터(two pointer) 문제 분석 1. 0 이상의 정수로 주어지는 높낮이 지도에서 비가 오고 난 이후에 빗방울이 어떻게 튕겼는지 계산하여라. - 1 : 구현해야 하는 문제에 대해서 말하고 있다. 입출력 예시를 살펴보면 문제를 이해할 수 있다. 입출력 형태 - height : 높이가 저장된 배열이다. 주어진 배열을 그림으로 표현하면 예시와 같이 그릴 수 있다. - 이러한 높낮이로 되어 있는 땅에 비가 내리게 되면 가장 높은 땅인 3에 튕겨서 낮은 쪽으로 빗방울이 흐르게 된다. - 가장 높은 3에서 빗방울이 왼쪽으로 튀면, 그 다음 높은 높이인 2까지 총 4개의 빗방울이 고이게 된다. - 2에 튀긴 빗방울은 다음 높이인 1까지 ..
[리트코드] 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에서..
[리트코드] Most Common Word(python) 리트코드, Most Common Word_가장 많이 등장한 단어 찾기 TL;DR 주어진 문자열을 조건에 맞게 처리할 수 있는지 문제 분석 1. 문자열 집합인 paragraph와 금지된 단어인 banned가 주어졌을 때 금지되지 않은, 가장 많이 등장한 단어를 반환한다. 2. 최소 1개의 단어는 금지되며, 정답은 단 하나인 것이 보장된다. 3. paragraph에 있는 단어는 소문자 형태로 반환되어야 한다. - 1 : 해결해야 하는 문제에 대해서 설명하고 있다. - 2 : 문제의 자체적인 제한조건에 대해서 설명하고 있다. - 3 : 반환 시 주의해야 할 점에 대해서 설명하고 있다. 대소문자 구분 없이 소문자 형태로 출력해야 하며, 쉼표(,)와 같은 표현들은 제외되어야 한다. 입출력 형태 - 예시 1번 - ..
[리트코드] Reorder Data in Log Files(python) 리트코드, Reorder Data in Log Files_로그 파일 데이터 재정렬 TL;DR 문자열 정렬을 할 수 있는지 문제 분석 1. 기록의 첫 번째 글자는 식별자이다. 2. 영어 소문자로 구성된 문자 기록과 숫자로만 구성된 숫자 기록 두 가지 종류가 있다. 3. 문자 기록은 숫자 기록보다 먼저 와야 한다. 4. 문자 기록은 사전순으로 정렬되며, 만약 같다면 식별자를 사전순으로 정렬해야 한다. 5. 숫자 기록은 입력된 순서대로 정렬된다. - 3 ~ 4 : 문자 기록을 처리해야 하는 방법을 명시하고 있다. 문자 기록은 사전순으로 정렬되어야 하며, 같을 경우는 기록의 가장 처음에 있는 식별자를 사전 순으로 정렬한다. - 5 : 숫자 기록은 입력 순서대로 정렬한다. 입출력 형태 - 예제 1에서 입력은 5개..
[리트코드] Reverse String(python) 리트코드, Reverse String_문자열 뒤집기 TL;DR 문자열 처리를 할 수 있는지 문제 분석 1. 주어진 문자열 s를 뒤집는 함수를 작성하라. 2. 단, 추가적인 변수를 할당하지 않고, 주어진 문자열 s 자체를 변형해야 한다. - 1 : 문제에서 해결해야 하는 것에 대해서 말하고 있다. - 2 : 문제의 주요 조건, 그 어떤 추가 메모리의 할당 없이 주어진 문자열 s를 뒤집어야 한다. 입출력 형태 - 주어진 입력 s를 뒤집은 결과를 보이면 된다. 풀이 class Solution: def reverseString(self, s: List[str]) -> None: """ Do not return anything, modify s in-place instead. """ s.reverse() - `r..