한 사람이 세 판의 가위바위보를 한다 할 때, 세 번의 선택을 할 수 있습니다. 세 번의 선택으로 가능한 모든 경우의 수를 2차원 배열로 나타 내는 함수를 구현하세요.(단, 'rock', 'paper', 'scissors' 순의 중요도를 가지는 '가중치 적용 정렬'을
문제를 통해 생각해 볼 것
문제를 통해 생각해 볼 것
문제를 통해 생각해 볼 것
문제를 통해 생각해 볼 것
문제를 통해 생각해 볼 것
문제를 통해 생각해 볼 것
문제를 통해 생각해 볼 것
문제를 통해 생각해 볼 것
문제를 통해 생각해 볼 것
문제를 통해 생각해 볼 것
노드의 탐색을 treeBFS 탐색 순으로 배열에 담아서 내는 함수를 작성문제를 통해 생각해 볼 것
배열을 입력받아 오름차순으로 정렬하여 리턴하는 함수함수의 두 번째 인자로 callback 함수를 받아서, 그 함수의 리턴값을 기준으로 요소들을 정렬한다.문제를 통해 생각해 볼 것
부분적으로 오름차순 정렬된 정수의 배열과 정수를 입력받아 정수의 인덱스를 리턴해야 합니다.문제를 통해 생각해 볼 것
현재 비밀번호를 새 비밀번호로 변경하는데 필요한 최소동작의 수를 리턴한번에 한개의 숫자만 변경 가능4자리의 소수인 비밀번호로만 변경 가능문제를 통해 생각해 볼 것
문제를 통해 생각해 볼 것
문자열을 입력받아 문자열 내의 모든 괄호의 짝이 맞는지 여부를 리턴해야 합니다.다음 단계에 맞춰 함수를 작성해 보세요괄호의 종류를 단 한가지로 한정합니다.괄호의 종류를 늘려 모든 종류의 괄호에도 작동하도록 합니다.괄호를 제외한 문자열이 포함된 경우에도 작동하도록 합니다
배열 두개를 입력받아 전체 요소 중 k번째 요소를 리턴해야 한다.힌트 : 이진 탐색(binary search)를 응용하여 해결단순하게 생각하면 두 배열을 합친다음 정렬시켜서 (k-1)인덱스의 값을 찾으면 된다.콘솔의 경우는 정답을 무사히 반환한다 하지만 역시나 npm
문자열을 입력받아 문자열의 가장 긴 접두어와 접미어를 찾아 그 길이를 리턴해야 한다.non-overlapping: 접두어와 접미어는 서로 겹치는 부분이 없어야 합니다. 다시 말해, prefix와 suffix는 문자열의 동일한 인덱스에 위치한 문자를 요소로 가지면 안 됩
mergeSort를 구현하세요잊을만 하면 나오는 정렬 문제다 이번에 할 정렬은 합병 정렬이다. 이 문제는 '컴퓨터과학로드맵'에서 한번 개념을 잡은 적이 있어서 쉽게 풀수 있을 것 같다.배열을 두 개로 나눈다. 나누어진 두 배열을 각각 정렬한다.정렬된 두 배열을 합친다.
아래와 같은 과정을 거쳐 부등호 수(inequalityNumber)를 만들 수 있습니다.최대 9개의 부등호(<, >)가 주어집니다.부등호의 좌우에는 0부터 9사이의 숫자가 한 번씩만 들어가야 합니다.부등호를 만족하는 숫자의 조합을 차례대로 이어 붙여 만든 정수를
2차원 M x N 배열을 나선형(spiral)으로 순회해야 합니다.문제만 보고는 처음에는 이해를 못했는데 예제를 통해서 이해할 수 있었다. 이전 문제의 약간 응용버전 같은 느낌이었다.일단 큰 그림을 그리는데 집중했다. 이 메트릭스 모양에서 윗변을 순서대로 넣어주고 오른
정수를 요소로 갖는 배열을 입력받아 오름차순으로 정렬하여 리턴해야 합니다.끝난줄 알았는데 아직 안 끝난 정렬 문제다... 일단 기수 정렬의 개념을 이해하고 그대로 코드를 작성해보았다.당연하게도 콘솔은 잘 나오지만 테스트는 통과 못하고 있다. 이제는 진자 욕이 나오려한다
세로와 가로의 길이가 각각 M, N인 방의 지도가 2차원 배열로 주어졌을 때, 1은 장애물을 의미하고 0 이동이 가능한 통로를 의미합니다. 로봇은 지도 위를 일분에 한 칸씩 상하좌우로 이동할 수 있습니다. 로봇의 위치와 목표 지점이 함께 주어질 경우, 로봇이 목표 지점
정수를 요소로 갖는 배열을 입력받아 다음의 조건을 만족하는 LSCS\*를 리턴해야 합니다.LSCS: 주어진 배열의 연속된 부분 배열\*의 합을 구한다고 할 때, 이 중 가장 큰 값(Largest Sum of Contiguous Subarray)연속된 부분 배열들: 배열
세로와 가로의 길이가 각각 M, N인 마을지도가 배열로 주어졌을 때, '1'은 주민이 있는 집을 의미하고 '0'은 주민이 없는 땅을 의미합니다. 이 마을은 소문이 시작되면 하루에 상하좌우 한 칸 바로 옆에 있는 집으로 퍼집니다. 특정 주민의 집 (R, C)으로부터 어떤
문제를 통해 생각해 볼 것
문제 :
정수를 요소로 갖는 배열을 입력받아 오름차순으로 정렬하여 리턴해야 합니다.
정수를 요소로 갖는 배열과 특정 구간을 입력받아, 해당 구간 내에서 최소값을 리턴해야 합니다.
문제 : rangeMinimum 풀이
정수를 요소로 갖는 문자열을 입력받아 다음의 조건을 만족하는 LIS의 길이를 리턴해야 합니다.LIS: 배열의 연속되지 않는 부분 배열 중 모든 요소가 엄격하게 오름차순으로 정렬된 가장 긴 부분 배열(Longest Increasing Subsequence)배열 \[1,
문제 : LCS
좌표평면 상의 다양한 점들을 입력받아 가장 가까운 두 점 사이의 거리를 리턴해야 합니다.
좌표평면 상의 다양한 점들을 입력받아 가장 가까운 두 점 사이의 거리를 리턴해야 합니다.
다양한 동전들을 가지고 특정 금액을 만들 수 있는 모든 경우의 수를 리턴해야 합니다.예를 들어, 100원, 500원짜리 동전을 가지고 1,000원을 만들 수 있는 방법은 총 3가지 입니다.100원 10개, 100원 5개 + 500원 1개, 500원 2개Reference
한 변의 길이가 2의 제곱수인 정사각형의 흑백 이미지가 2차원 배열로 주어집니다. 각 좌표에는 0(백) 또는 1(흑)이 저장되어 있습니다. 이미지에 포함된 데이터가 모두 1이면 '1', 모두 0이면 '0' 한 글자로 압축할 수 있습니다. 그렇지 않은 경우, 이를 대문자
공장의 조립 기계가 고장이 나 수리를 위해 여러 명의 수리공들이 왔습니다. 조립 기계는 일자 형태로 길게 배치되어 있기 때문에 수리공들 또한 나란히 위치해서 수리를 진행해야 합니다. 기계의 각 부품은 한 명의 수리공만 수리할 수 있고, 이동을 최소화하기 위해 각 수리공
문자열을 입력받아 부분 문자열 중 가장 긴 (palindrome)\*의 길이를 리턴해야 합니다.palindrome: 데이터를 앞에서 뒤로 또는 뒤에서 앞으로 조회한 결과가 동일한 경우부분 문자열 중 가장 긴 회문을 계산하는 효율적인 알고리즘(O(N^2))이 존재합니다.
세로와 가로의 길이가 각각 R, M인 2차원 R X M 배열 grid가 주어졌을 때, '1'은 땅을 의미하고 '0' 은 물을 의미합니다. 주어진 2차원 배열에 존재하는 섬의 개수를 리턴해야 합니다.
세로와 가로의 길이가 모두 N인 마을지도가 배열로 주어졌을 때, '1'은 주민이 있는 집을 의미하고 '0'은 주민이 없는 땅을 의미합니다. 이 마을의 비상연락망 시스템을 구축하려고 합니다. 최초에 정보를 알고 있는 주민의 집들이 '2'로 표시됩니다. 이 중에 일부를 비
좌표평면 위에 존재하는 수많은 직사각형에 대한 정보가 2차원 배열로 주어집니다. 이 직사각형들은 서로 겹처 있을(overlapping) 수 있습니다. 이 직사각형들이 이루는 면적을 리턴해야 합니다.문제를 다르게 표현하면 아래와 같습니다.\- 밑이 투명한 좌표평면 위에
외판원 문제(travelling salesman problem, 이하 TSP)는 아래와 같이 정의됩니다.여러 도시들의 위치가 주어졌을 때, 모든 도시들을 단 한번씩 방문하는 최단 거리를 구하세요.각 도시의 위치를 나타내는 좌표평면 위의 점들을 입력받아, TSP의 최단
자연수의 집합(set)과 자연수(bound)를 입력받아 아래의 조건을 만족하는 수를 리턴해야 합니다.집합의 요소를 최대 한번씩만 더해서 만들어야 한다.bound를 넘지 않아야 한다.
배낭 채우기 문제 (knapsack problem)는 유명한 조합 최적화 문제로 아래와 같이 정의됩니다.한쪽에 배낭 하나와 이 배낭에 담을 수 있는 무게의 최댓값이 정해져 있습니다. 다른 한쪽에는 일정한 가치와 무게를 가진 짐들이 있습니다. 이때 배낭에 담을 수 있는
무방향 그래프의 한 정점(vertex)에서 다른 정점까지의 최단 거리를 리턴해야 합니다.최단 경로의 길이 대신 최단 경로를 리턴하도록 구현해 보세요. 테스트 코드는 따로 제공하지 않습니다.정점의 수에 비해 간선의 수가 작은 경우, 그래프를 연결 리스트로 구현하고 우선순
방향성 그래프의 임의의 두 정점(vertex)간 최단 거리를 리턴해야 합니다.그래프의 임의의 두 정점간 최단 경로의 길이를 인접 행렬의 형태로 리턴해야 합니다.플로이드-와샬 알고리즘을 구현해야 합니다.플로이드-와샬 알고리즘을 직접 생각해내긴 어렵기 때문에 바로 학습하시
방향성 그래프의 한 정점(vertex)에서 다른 모든 정점까지의 최단 거리를 리턴해야 합니다.벨만-포드 알고리즘은 다익스트라 알고리즘과 마찬가지로 '한 정점으로부터 각 정점 간 최단 거리(single-source shortest path)'를 구하는 알고리즘입니다.각
두 개의 문자열 strA, strB를 입력받아 아래에 정의된 작업들을 통해 두 문자열을 동일하게 만들 수 있는지 확인해야 합니다.작업1: strA의 소문자 한개를 대문자로 변경작업2: strA의 소문자 한개를 제거strA의 각 소문자에 대해서 대문자로 변경하거나 제거하