본문 바로가기

반응형

Algorithm

(96)
[리트코드] 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에서..
[리트코드] 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..
[리트코드] Valid Palindrome(python) 리트코드, Valid Palindrome_적절한 팰린드롬 TL;DR 팰린드롬 : 원본과 원본을 뒤집었을 때가 동일한 경우. 예)"아 많다 많다 많다 많아" 문자열 슬라이싱을 활용 할 수 있는가 문제 분석 1. 주어진 문자열 s에 대해서 해당 문자열이 팰린드롬인지 아닌지를 판별하라. 2. 문자열은 알파벳 또는 숫자로만 이루어져 있다고 가정한다. - 1 : 해결해야 하는 문제에 대해서 말하고 있다. - 2 : 문제의 조건에 대해서 소개하고 있다. 주어지는 문자열 s에서 영어 대-소문자와 숫자를 제외한 문자들은 모두 무시해도 된다. 입출력 형태 - 주어진 입력 s가 팰린드롬이라면 True를 아니라면 False를 반환해야 한다. - 예시 1번에서 주어진 문자열 s에서 알파벳과 숫자로 이루어진 문자는 뒤집어도 동..
[프로그래머스] 로또의 최고 순위와 최저 순위(python) 2021년 5월 27일 Algorithm, 프로그래머스, 로또의 최고 순위와 최저 순위 2021년 Dev-Matching: 웹 백엔드 개발자(상반기) TL;DR 주어진 문제의 조건을 구현할 수 있는지 문제 분석 1. 순서와 상관없이, 구매한 로또에 당첨 번호와 일치하는 번호가 있으면 맞힌 걸로 인정됩니다. 2. 알아볼 수 없는 번호가 당첨 번호라면, 해당 맞춘 개수의 순위에 당첨됩니다. 3. 알아볼 수 없는 번호가 당첨 번호가 아니라면, 해당 맞춘 개수의 순위에 당첨됩니다. - 2 ~ 3 : 알아볼 수 없는 번호인 0을 당첨번호라고 생각했을 때가 당첨 가능한 최고 순위, 그렇지 않을 경우가 당첨 가능한 최저 순위이다. - 즉, 당첨 가능한 최고 순위는 0이 아닌 숫자 중 당첨번호인 숫자의 개수 + 0의 ..