본문 바로가기

반응형

leetcode

(44)
[리트코드] Letter Combinations of a Phone Number(python) 리트코드, Letter Combinations of a Phone Number_핸드폰 글자 조합하기 TL;DR DFS 문제 분석 1. 핸드폰 자판 2-9에는 문자들이 할당되어 있다. 2. 주어진 자판 조합에 대해서 만들 수 있는 모든 문자들을 반환하라. 3. 반환하는 문자의 순서는 상관 없다. - 문제에서 주어진 핸드폰 2 ~ 9에는 a ~ z까지의 문자가 할당되어 있다. - 문제에서 숫자 조합을 주어지면 해당 문자에 할당된 알파벳을 조합할 수 있는 모든 경우의 수를 반환하면 된다. 입출력 형태 - 예시 1 : 자판 23이 주어졌다면 만들 수 있는 조합은 "abc"와 "def"를 활용한 총 9개의 조합이다. - 예시 3 : 하나의 자판이 주어졌다면 만들 수 있는 조합은 할당된 알파벳은 "abc"를 각각 ..
[리트코드] Number of Islands(python) 리트코드, Number of Islands_섬의 수 TL;DR 깊이 우선 탐색(DFS) 너비 우선 탐색(BFS) 문제 분석 1. 주어진 M * N 크기의 2차원 배열 grid는 '1' 땅, '0' 물을 의미한다. 2. 주어진 2차원 크기 배열에서 섬의 개수를 반환하라. 3. gird의 외곽은 모두 물로 둘러쌓여있다고 가정한다. - 1 ~ 2 : 땅(1)과 물(0)이 주어진 지도 형태의 2차원 배열 grid에 대해서 섬의 개수를 반환한다. - 3 : grid의 최외곽은 모두 물로 둘러쌓여있다고 생각한다. 이 부분을 입출력 형태에서 살펴볼 것이다. 입출력 형태 - 주어진 예시에서 빨간색으로 표시되어 있는 부분이 섬이다. - 문제 3번 조건에 따라 grid의 외곽은 모두 물로 되어 있으므로 섬으로 생각할 수 ..
[리트코드] Top K Frequent Elements(python) 리트코드, Top K Frequent Elements_K개의 자주 나온 원소들 TL;DR 딕셔너리(dictionary)를 활용하여 문제를 해결할 수 있는지 `collections.Counter`를 활용할 수 있는지 문제 분석 1. 정수 배열 nums와 정수 k가 주어질 때, 상위 k개의 가장 자주 등장한 원소를 반환하라. 2. 반환되는 정답은 어떤 순서로 정렬되어도 상관없다. - 1 : 해결해야 하는 문제에 대해서 설명해야 한다. - 2 : 자주 등장한 k개의 숫자들을 별도의 정렬 없이 그냥 반환하면 된다. 만약 이 부분에 다른 조건이 명시된다면 해당 조건을 반영하여 답을 반환해야 한다. 입출력 형태 - 주어진 숫자 배열은 3개의 1, 2개의 2, 1개의 3으로 이루어져 있다. - k가 2로 주어졌으므로..
[리트코드] Longest Substring Without Repeating Characters(python) 리트코드, Longest Substring Without Repeating Characters_중복 문자가 없는 가장 긴 서브 문자열 TL;DR 딕셔너리(dictionary) 두 개의 포인터(투 포인터, two pointer)를 활용한 슬라이딩 윈도우(sliding window)를 구현할 수 있는지 문제 분석 1. 주어진 문자열 s에 대해, 중복 문자가 없는 가장 긴 서브 문자열의 길이를 찾아라. - 해결해야 하는 문제 조건에 대해서 말하고 있다. - 여기서 주의해야할 점은 서브 문자열이라는 것이다. 이 부분에 대해서는 입출력 형태에서 확인하도록 하겠다. 입출력 형태 - 가장 먼저 생각할 수 있는 방법은 `collections.Counter` 또는 `set`으로 변환하여 중복을 제거하는 방법이다. 단, ..
[리트코드] Jewels and Stones(python) 리트코드, Jewels and Stones_보석과 돌 TL;DR 해시(해시 테이블/맵, 딕셔너리)을 사용하여 주어진 문제를 풀 수 있는지 문제 분석 1. jewels : 각 글자는 보석에 해당하는 돌을 나타낸다. 2. stones : 각 글자는 내가 보유하고 있는 돌을 나타낸다. 3. 내가 갖고 있는 돌 중 보석이 몇 개나 있는지를 반환하라. 4. 'a'와 'A'는 서로 다른 종류의 돌로 간주한다. - 내가 보유하고 있는 돌인 stones에서 jewels에 있는, 보석인 돌을 얼마나 갖고 있는지를 파악하는 문제이다. - 내가 보유한 돌의 종류를 key로, 돌의 개수를 value로 하는 딕셔너리(dictionary)로 생각하면 문제를 해결할 수 있다. 입출력 형태 - 예시 1 - 내가 보유한 돌은 a 1개..
[리트코드] Design Circular Queue(python) 리트코드, Design Circular Queue_원형 큐 구현하기 TL;DR 원형 큐(Circular Queue)에 대해서 이해하고 있는지 문제 분석 1. First In, First Out(FIFO) 특징을 갖고 있는, 큐의 마지막이 큐의 처음과 연결되어 있는 '링 버퍼' 구조를 갖고 있는 원형 큐를 구현하여라. 2. MyCircularQueue(k) : 큐의 길이가 k인 원형 큐를 생성한다. 3. Front() : 큐의 가장 앞에 있는 원소를 가져온다. 만약 큐가 비어있다면 -1을 반환한다. 4. Rear() : 큐의 가장 뒤에 있는 원소를 가져온다. 만약 큐가 비어있다면 -1을 반환한다. 5. enQueue(value) : value를 큐에 삽입한다. 성공적으로 실행되었을 경우 True를 반환한다..
[리트코드] Implement Queue using Stacks(python) 리트코드, Implment Queue using Stakcs_스택을 활용하여 큐 구현하기 TL;DR 큐(Queue)에 대해 이해하고 있는지 문제 분석 1. 두 개의 스택을 활용하여 큐를 구현하라. 2. 구현된 큐는 기본적인 큐의 기능인 push, peek, pop, empty를 지원해야 한다. 3. 큐를 구현할 때는 stack의 기본 기능인 push to top, peek/pop from pop, size, is emtpy만 활용해야 한다. - stack의 기본 기능만 사용하여 큐를 구현해야 한다. - 큐는 First In, First Out(FIFO)의 자료구조이다. - push : 큐에 자료형을 집어넣는다. - peek : 큐의 가장 먼저 들어간 원소를 반환한다. - pop : 큐의 가장 먼저 들어..
[리트코드] Implement Stack using Queues(python) 리트코드, Implement Stack using Queues_큐로 스택 구현하기 TL;DR 스택(Stack)의 개념을 이해하고 있는지 문제 분석 1. 두 개의 큐를 사용하여 스택을 구현하여라. 2. 구현된 스택은 push, top, pop, empty 함수를 지원해야 한다. 3. 큐를 사용할 때 push to back, peek/pop from front, size, is empty와 같은 함수만 사용 가능하다. - 큐를 활용하여 스택의 기능인 push, pop, top, empty를 구현하는 문제이다. - 스택은 Last In, First Out(LIFO) 구조를 갖는 자료구조 형이다. - push는 스택의 새로운 원소를 추가하는 동작을 수행한다. - top은 가장 마지막에 추가된 스택의 원소를 반환..