Chloeeekim
Chloeeekim's Blog - All about everything
All posts with category 'Algorithm'
binary tree가 주어졌을 때, 해당 트리의 minimum depth를 구하는 문제
root 노드의 depth는 1이다.
숫자들로 이루어진 리스트가 주어졌을 때, 해당 리스트에서 가장 많이 등장하는 숫자를 찾는 문제
majority element는 리스트의 사이즈가 n일 때, n/2번보다 많이 등장한다.
리스트는 비어있지 않고, majority element는 항상 존재한다.
binary tree가 하나 주어졌을 때, 해당 트리의 level order traversal의 결과를 구하는 문제
왼쪽에서 오른쪽 순서로 순회하며, 레벨별로 나타내어야 한다.
양의 정수가 하나 주어졌을 때, 해당 정수의 제곱근을 구하는 문제
정수 형태로 출력한다. (소수점 아래로는 내림 처리한다.)
중복되는 숫자가 포함된 리스트가 주어졌을 때, 이를 이용해 만들 수 있는 모든 permutation들을 구하는 문제
interval들의 collection이 주어졌을 때, 겹치는 모든 interval들을 합치는 문제
숫자로 이루어진 문자열이 주어졌을 때, 이 숫자들로 나타낼 수 있는 모든 문자의 combination들을 구하는 문제 숫자는 2부터 9까지이다. (1은 해당하는 문자가 없다.) 각 숫자에 맵핑되는 문자는 다음과 같다. 2: a,...
두 개의 binary string이 주어졌을 때, 두 binary의 합을 구하는 문제
결과 또한 binary string으로 나타내어야 한다.
입력되는 두 string은 모두 non-empty이며, 0과 1로만 이루어져 있다.
서로 다른 숫자로 이루어진 리스트가 주어졌을 때, 이를 이용해 만들 수 있는 모든 permutation들을 구하는 문제
candidate number의 set이 주어졌을 때, 이를 이용해 target number를 만들 수 있는 모든 unique한 combination을 구하는 문제 candidates 내의 각 숫자는 무조건 한 번만 사용되어야 한다. target을 포함한 주어지는 모든...
binary tree가 주어졌을 때, 이를 좌우로 뒤집는 문제
숫자 n이 주어졌을 때, n쌍의 parentheses로 만들어지는 모든 조합을 찾는 문제
숫자들이 포함된 리스트가 주어졌을 때, 해당 리스트에 중복된 값이 있는지를 구하는 문제 동일한 값이 두 번 이상 반복되는 것이 존재할 경우 true를 리턴한다. 모든 값이 한 번씩만 등장하는 경우 false를...
candidate number의 set이 주어졌을 때, 이를 이용해 target number를 만들 수 있는 모든 unique한 combination을 구하는 문제 candidates 내의 숫자는 동일한 숫자를 몇 번을 반복해 사용해도 된다. target을 포함한 주어지는...
binary tree가 주어졌을 때, 해당 트리를 오른쪽에서 본 결과를 구하는 문제
결과는 top에서 bottom 순서로 출력한다.
binary tree가 주어졌을 때, root-to-leaf path의 숫자를 모두 더한 값을 구하는 문제 트리 노드는 0부터 9까지의 숫자만 포함한다. root-to-leaf path의 예로 1->2->3이 있다면, 123으로 계산한다. leaf 노드란 자식이 없는 노드를...
binary tree와 정수 sum이 주어졌을 때, root-to-leaf path의 합이 sum과 동일한 모든 path를 구하는 문제
leaf 노드란 자식이 없는 노드를 의미한다.
주어진 함수를 포함하는 stack을 만드는 문제
push(x), pop(), top(), geetMin() 네 가지 함수를 만들어야 한다.
binary tree가 주어졌을 때, 해당 트리의 최대 depth를 구하는 문제
depth는 root 노드에서부터 leaf 노드까지의 길이를 의미한다.
leaf 노드란 자식이 없는 노드를 의미한다.
주어진 정수 배열에서 두 값의 합이 찾고자 하는 값(target)일 경우, 두 인덱스를 반환하는 문제 주어진 정수 배열은 이미 증가하는 방향으로 정렬되어 있다. 인덱스는 non zero-based로 리턴해야 한다. (1부터 시작) 정확히...
배열(리스트)이 하나 주어졌을 때, 이 배열을 오른쪽으로 k번 회전한 결과를 구하는 문제
k는 음수가 아니다.
양의 정수가 하나 주어졌을 때, 이를 엑셀 시트에서 보이는 것과 같은 column title로 변경하는 문제 A -> 1, B -> 2, … , Z -> 26, AA -> 27, AB...
엑셀 시트에 나타나는 것과 동일한 column title이 주어졌을 때, 이를 숫자로 변경하는 문제 A -> 1, B -> 2, … , Z -> 26, AA -> 27, AB -> 28...
binary tree가 하나 주어졌을 때, 해당 트리의 preorder traversal의 결과를 구하는 문제
binary tree가 하나 주어졌을 때, 해당 트리의 postorder traversal의 결과를 구하는 문제
binary tree가 하나 주어졌을 때, 해당 트리의 inorder traversal의 결과를 구하는 문제
binary tree가 두 개 주어졌을 때, 두 트리가 동일한 트리인지 확인하는 문제
동일한 트리의 조건 : 구조가 동일하고, 각 노드의 값이 동일하다.
m x n의 양수로 채워진 Grid가 주어졌을 때, 좌상단에서 우하단으로 이동하는 path의 합의 최솟값을 구하는 문제
한 번에 한 칸씩 오른쪽 혹은 아래로만 이동할 수 있다.
정수로 이루어진 수열에서 합이 최대가 되는 연속 부분 수열을 찾는 문제
삼각형 형태의 2차원 배열(리스트)이 주어졌을 때, top에서 bottom까지 가는 path의 최소합을 찾는 문제
binary tree와 정수 targetSum이 주어졌을 때, root-to-leaf path의 합이 sum과 동일한 path가 존재하는지를 찾는 문제
leaf 노드는 child가 존재하지 않는다. (left, right 모두 None)
binary tree가 주어졌을 때, 이를 flatten하는 문제
우측으로 편향되도록 바꾼다.
순서는 depth-first
in-place로 해결할 것
비어 있지 않은, 숫자로 이루어진 리스트가 주어졌을 때, 해당 리스트 안에 한 번만 등장하는 원소를 찾는 문제
단 하나의 원소를 제외하고는 모두 세 번씩 등장한다.
비어 있지 않은, 숫자로 이루어진 리스트가 주어졌을 때, 해당 리스트 안에 한 번만 등장하는 원소를 찾는 문제
단 하나의 원소를 제외하고는 모두 두 번씩 등장한다.
주어진 문자열이 Palindrome인지 확인하는 문제
Palindrome : 회문. 거꾸로 읽었을 때도 제대로 읽었을 때와 동일한 경우
문자열 내에서 alphanumeric character를 제외한 나머지 경우는 무시한다.
양의 정수인 rowIndex가 주어졌을 때, 파스칼의 삼각형(Pascal’s Triangle)에서 rowIndex번째를 구하는 문제
파스칼의 삼각형 : 각 숫자는 위의 두 숫자의 합으로 이루어진다.
양의 정수인 numRows가 주어졌을 때, 파스칼의 삼각형(Pascal’s Triangle)을 만드는 문제
파스칼의 삼각형 : 각 숫자는 위의 두 숫자의 합으로 이루어진다.
m x n 사이즈의 그리드가 주어졌을 때, 해당 그리드의 왼쪽 위에서 오른쪽 아래까지 도달하는 방법의 수를 구하는 문제 한 번에 한 칸만 아래 혹은 오른쪽으로 이동할 수 있다. m과 n은...
정수로 이루어진 정렬된 리스트가 주어졌을 때, 하나의 숫자는 최대 2번만 등장하도록 겹치는 숫자들을 제외한 리스트를 만드는 문제 in-place : 다른 리스트를 할당하지 말고 주어진 리스트 내에서 해결할 것 각 원소는...
Linked List와 숫자 x가 주어졌을 때, x보다 작은 노드가 x보다 크거나 같은 노드보다 앞에 위치하는 Linked List로 바꾸는 문제
기존 노드의 상대적인 순서는 유지되어야 한다.
두 정수 m, n이 주어졌을 때, m x n 사이즈 그리드의 왼쪽 위에서 오른쪽 아래까지 도달하는 방법의 수를 구하는 문제 한 번에 한 칸만 아래 혹은 오른쪽으로 이동할 수 있다....
m x n 사이즈의 2차원 리스트가 주어졌을 때, targeet이 존재하는지 찾는 문제 각 row에 있는 숫자들은 증가하는 순서로 정렬되어 있다. 각 row의 첫 번째 숫자는 이전 row의 마지막 숫자보다 크다....
정렬된 숫자로 이루어진 Linked List가 하나 주어졌을 때, 모든 숫자가 단 한 번만 등장하도록 중복을 제거한 리스트를 만드는 문제
양의 정수로 이루어진 리스트가 주어졌을 때, 최대 각 칸의 값만큼 점프할 수 있다고 가정하면, 마지막 인덱스에 도달할 수 있는지 확인하는 문제 e.g., 값이 3이라면 1칸, 2칸, 3칸 다음으로 이동할 수...
정수 n이 주어졌을 때, n번째 계단까지 도달하는 방법의 개수를 구하는 문제
한 번에 1계단 혹은 2계단씩만 올라갈 수 있다.
n은 양의 정수로 주어진다.
비어 있지 않은, 숫자로 이루어진 리스트가 하나 주어졌을 때, 리스트의 값이 나타내는 정수에 1을 더한 값을 리스트로 리턴하는 문제 숫자는 음수가 아니며, 0으로 시작하지 않는다. 리스트 내의 각각의 원소들은 single...
하나의 문자열이 주어졌을 때, 마지막 단어의 길이를 구하는 문제
주어진 문자열은 upper/lower-case 알파벳과 공백으로 이루어진다.
단어란 공백을 포함하지 않는 charater의 sequence이다.
마지막 단어가 없는 경우, 0을 리턴한다.
정렬된 리스트와 정수 하나가 주어졌을 때, 주어진 정수(target)의 인덱스를 찾는 문제 리스트는 증가하는 방향으로 정렬되어 있지만, rotate 되어 있다. e.g., [0, 1, 2, 4, 5, 6, 7]은 [4, 5, 6,...
특정한 규칙에 따라 sequence가 생성될 때, n번째 sequence를 구하는 문제 ‘1’은 “one 1”로 읽기 때문에 ‘11’이 된다. ‘11’은 “two 1s”로 읽기 때문에 ‘21’이 된다. ‘21’은 “one 2, one 1”으로 읽기...
정렬된 리스트와 정수 하나가 주어졌을 때, 주어진 정수(target)가 삽입될 위치의 인덱스를 찾는 문제
target이 삽입되더라도 리스트는 정렬되어 있어야 한다.
하나의 정렬된 리스트와 정수가 주어졌을 때, 주어진 정수(target)가 등장하는 처음과 끝의 인덱스를 찾는 문제
리스트 내에 target이 없는 경우, [-1, -1]을 리턴한다.
정수로 이루어진 정렬된 리스트가 주어졌을 때, 주어진 리스트에서 겹치는 숫자들을 제외한 리스트를 만드는 문제 in-place : 다른 리스트를 할당하지 말고 주어진 리스트 내에서 해결할 것 각 원소는 단 한 번씩만...
두 개의 문자열(haystack, needle)이 주어졌을 때, haystack 내에서 needle이 처음 등장하는 인덱스를 리턴하는 문제
needle이 haystack 내에 존재하지 않는다면 -1을 리턴한다.
정수로 이루어진 리스트와 정수가 하나 주어졌을 때, 주어진 리스트에서 주어진 정수를 제외한 리스트를 만드는 문제 in-place : 다른 리스트를 할당하지 말고 주어진 리스트 내에서 해결할 것 주어진 정수를 제외한 리스트의...
두 개의 정렬된 Linked List가 주어졌을 때, 이를 정렬된 하나의 Linked List로 만드는 문제
각 list의 노드 개수는 [0, 50]이다.
list1과 list2는 모두 non-decreasing 순으로 정렬되어 있다.
주어진 문자열의 괄호가 유효한지 확인하는 문제 문자열은 6가지 종류의 문자를 포함한다 : ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[’, ‘]’ 열리는 괄호는 반드시 같은 종류의 닫히는 괄호로 닫혀야 한다. 열린 괄호는 반드시...
주어진 정수 배열에서 세 개의 합이 0이 되는 모든 unique triplet을 찾는 문제 동일한 triplet이 포함되어서는 안 된다. (중복을 허용하지 않는다.) 세 값의 합이 0이 되는 triplet이 존재하지 않을 경우,...
여러 문자열이 포함된 array(list)가 주어졌을 때, 가장 긴 common prefix(모든 문자열에서 등장하는 prefix)를 찾는 문제
common prefix가 없는 경우, 빈 문자열(““)을 리턴한다.
모든 입력은 소문자 알파벳으로만 주어진다.
로마 숫자가 주어졌을 때, 정수로 변환하는 문제 각 문자(symbol)별 해당하는 값은 아래와 같다. I : 1 / V : 5 / X : 10 / L : 50 / C...
하나의 정수가 주어졌을 때, 해당 정수가 palindrome인지 확인하는 문제
Palindrome이란 : 회문. 거꾸로 읽었을 때도 제대로 읽었을 때와 동일한 경우
문자열이 주어졌을 때, 해당 문자열을 정수로 변환하는 문제 문자열은 whitespace character, 숫자 및 문자로 구성된다. 스페이스(‘ ‘)만이 whitespace character로 간주되며, 시작 부분을 포함하여 문자열 내에 많이 존재할 수 있다. minus(‘-‘)...
주어진 32-bit 정수를 뒤집는 문제
32-bit signed integer 기준 (범위 : -2^31 ~ 2^31 - 1)
해당 범위를 넘는 경우, 0을 출력
주어진 문자열에서 문자가 반복되지 않는 최대 길이의 substring의 길이를 구하는 문제
subsequence가 아닌 substring이어야 한다. (e.g., pwwkew에서 pwke는 subsequence)
두 개의 Linked List가 주어졌을 때, 두 Linked List의 합을 구하는 문제 각 노드에는 정확히 1자리의 숫자가 포함되어 있다. 숫자는 역순으로 저장되어 있다. (e.g., 342 : 2 -> 4 ->...
주어진 정수 배열에서 두 값의 합이 찾고자 하는 값(target)일 경우, 두 인덱스를 반환하는 문제
정확히 하나의 솔루션이 존재한다.
동일한 값은 두 번 사용할 수 없다.