LeetCode의 Merge K Sorted Lists 문제다.말 그대로 K 개의 정렬된 리스트를 병합하는 문제인데 리스트는 연결 리스트 형태로 주어지며 오름차순으로 정렬되어 있다.예를 들어 1,2,3, 4,5,6, 2,3,4가 주어진다면 1,2,2,3,3,4,4,5,
LeetCode의 Remove Duplicate Letters 문제다.문제가 조금 난해할 수 있는데 주어진 문자열에 대해서 모든 문자가 단 한 번만 등장해야 한다. 그러면서도 최대한 알파벳 순으로 가장 작은 문자열로 만들어야 한다.문제에서 주어진 예시는 "bcabc"를
LeetCode의 Jewels and Stones 문제다.문자열로 주어지는 '돌'과 '보석'을 비교해서 얼마나 많은 보석이 돌에 포함되어 있는지 확인하는 문제다. 예를 들어 "aaaaAb"같은 문자열로 돌이 주어졌을 때 "ab"처럼 보석이 주어졌다면 현재 돌 중에는 '
LeetCode의 Median of Two Sorted Arrays 문제다.정렬된 두 배열을 받았을 때 이 배열의 중앙값을 구하는 것이다. 조금 헷갈릴 수 있는 부분이 중앙값(median)은 평균(mean)과 다르다. 중앙값은 말 그대로 값들을 순서대로 정렬했을 때 그
LeetCode의 Reverse Linked List II 문제다.첫 번째 노드부터 마지막 노드까지 오름차순 값을 가진 노드들의 연결 리스트를 주어진 범위만큼 뒤집어서 반환하는 것이다. 예를 들어 노드 1, 노드 2, 노드 3, 노드 4, 노드 5가 있을 때 2번째 노
LeetCode의 Longest Substring Without Repeating Characters 문제다.주어진 문자열에서 반복되지 않는 가장 긴 문자열의 길이를 찾는 것이 목적인데 예를 들어 "abcabcbb"같은 문자열에서는 중복되지 않는 문자들로 이루어진 가장
LeetCode의 Top K Frequent Elements 문제다.숫자들로 이루어진 배열과 정수 k가 주어질 때 배열에서 가장 많이 등장한 정수를 내림차순으로 k개 반환하는 것이 목적이다. 헷갈릴 수 있지만 배열에 k개 이상 들어있는 정수를 반환하는 게 아니라 배열에
LeetCode의 Letter Combinations of a Phone Number 문제다.옛날 핸드폰 버튼에서 많이 볼 수 있는 버튼인데 이 버튼을 눌렀을 때 조합될 수 있는 모든 문자열을 구축하는 문제다.예를 들어 문제에서 23이 주어진다면 이는 2번 버튼과 3번
LeetCode의 Find First and Last Position of Element in Sorted Array 문제다.정렬된 오름차순 배열에서 특정 값이 어디부터 어디까지 있는지 탐색하는 문제다. 예를 들어 \[1, 2, 3, 3, 3, 4, 5]가 주어진다면
LeetCode의 Course Schedule 문제다.0부터 N-1까지 식별자로 구별되는 N개의 수강 과목이 주어진다. 그리고 선수과목을 나타낸 리스트가 주어진다. 각 수강 순서는 \[A, B] 형태며 A를 수강하려면 선수 과목 B를 먼저 수강해야 한다는 것을 의미한다
LeetCode의 Network Delay Time 문제다. 위의 그림처럼 n개의 노드로 이루어진 가중치 방향성 연결 그래프가 주어진다. 노드를 네트워크 상의 호스트라 하고 노드 간 가중치를 이동 시간이라고 할 때 지정된 한 노드에서 시작해서 다른 모든 노드에 데이터를
LeetCode의 Cheapest Flights Within K Stops 문제다.이전 다익스트라 문제와 거의 동일한데 방향성 가중치 그래프로 나타낸 항공로에서 제한된 만큼 환승하고 목적지에 도달할 수 있는 최단 거리를 계산하는 문제다.일반적인 다익스트라 문제와 조금
LeetCode의 Diameter of Binary Tree다.이진 트리의 지름(diameter)을 구하라는 게 무슨 소리인지 헷갈릴 수 있지만 문제에서는 트리의 두 노드 간 가장 먼 거리를 구하라고 명시하고 있다.예를 들어 위와 같은 트리에서는 3을 반환해야 한다.
LeetCode의 Longest Univalue Path 문제다.트리가 주어졌을 때 같은 값(Univalue)의 최장 경로 길이를 구하는 문제다. 이때 '경로'란 노드들이 연결되어 있어야 하기 때문에 경로의 길이는 해당 노드들의 간선의 갯수가 된다.문제에서 주어진 위의
설명 LeetCode의 Invert Binary Tree 문제다. 위의 그림처럼 이진 트리가 주어졌을 때 이를 뒤집은 트리의 루트 노드를 반환하는 문제다. 풀이 루트 노드를 제외한 양쪽 서브 트리의 노드들을 모두 반전해야 하는데 처음에는 아래의 그림처럼 루트 노드부터
LeetCode의 Task Scheduler 문제다.처리해야 하는 작업의 목록과 동일 작업을 처리하는 데 필요한 대기 시간이 주어질 때 모든 작업을 가장 빨리 처리하려면 몇 초나 걸리는지 계산하는 문제다.예를 들어 작업이 \[A, A, A, B, B, B]가 주어지며
LeetCode의 Queue Reconstruction by Height 문제다.사람들을 일렬로 세웠을 때 앞에 자신보다 키가 크거나 같은 사람이 몇 명이나 있는지와 각자의 키가 주어질 때 이들을 알맞게 배치시키는 문제다.예를 들어 \[\[7,0],\[4,4],\[7,