본문 바로가기

반응형

코드스테이츠 SEB FE 41기/데일리 코딩(Hard)

(28)
[알고리즘/javascript] 바코드 문제 1, 2, 3으로만 이루어진 수열 바코드를 만들어야 합니다. 무조건 1, 2, 3만 붙여서 바코드를 만들었다면 쉬웠겠지만, 아쉽게도 바코드를 만드는 데에 조건이 걸려 있습니다. 바코드에서 인접한 두 개의 부분 수열이 동일하다면 제작할 수 없다고 할 때, 주어진 길이 len의 바코드 중 가장 작은 수를 반환하는 함수를 작성하세요. 만들 수 없는 바코드 만들 수 있는 바코드 112 1312 1231312 3 232312 231213 부분 수열? 주어진 수열에서 연속된 모든 구간을 말합니다. 수열 123의 부분 수열은 1, 2, 3, 12, 23, 123 입니다. 인접한 두 부분 수열? 첫번째 부분 수열과 두번째 부분 수열이 연속된 경우를 말합니다. 수열 1234에서 인접한 부분 수열 (우리는 두 부분수..
[알고리즘/javascript][DFS / BFS] 연결된 정점들 연결된 정점들 문제 방향이 없는 간선들의 목록이 주어질 때, 연결된 정점의 컴포넌트(그룹들)가 몇 개인지 반환하는 함수를 작성하세요. 입력 인자 1: edges 2차원 Array 타입을 요소로 갖는 시작과 도착 정점이 담겨있는 배열들을 담고 있는 목록 (2차원 배열, 정수 요소) ex) [[0, 1], [1, 2], [3, 4]] 출력 Number 타입을 리턴해야 합니다. 연결된 정점의 컴포넌트의 수를 숫자로 반환합니다. 주의 사항 주어진 간선은 무향입니다. [1, 2] 는 정점 1에서 정점 2로도 갈 수 있으며, 정점 2에서 정점 1로도 갈 수 있습니다. 입출력 예시 const result = connectedVertices([ [0, 1], [2, 3], [4, 5], ]); console.log(r..
[알고리즘/javascript][Graph] 인접 행렬 길찾기 인접 행렬 길찾기 문제 주어진 인접행렬에서 한 정점으로부터 다른 정점으로 이어지는 길이 존재하는지 반환해야 합니다. 입력 인자 1: matrix Array 타입을 요소로 갖는 인접 행렬이 담긴 2차원 배열 인자 2: from Number 타입의 시작 정점 인자 3: to Number 타입의 도착 정점 출력 boolean 타입을 리턴해야 합니다. 입출력 예시 const result = getDirections( [ [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1], [0, 1, 0, 0], ], 0, 2 ); console.log(result); // true // 정점 0에서 2로 가는 길이 존재하는지 확인합니다. // 0 --> 1 로 가는 간선이 존재하고, 1 --> 2 로 가..
[알고리즘/javascript] [Graph] 인접 행렬 생성하기 인접 행렬 생성하기 문제 방향이 있는 간선과 방향이 없는 간선들의 목록들을 받아 2차원 배열의 인접행렬을 반환하는 함수를 작성하세요. 조건 각 간선은 3가지 정보를 담고 있습니다. 0번째: 간선의 시작 정점 (0 이상의 정수) 1번째: 간선의 도착 정점 (0 이상의 정수) 2번째: 방향성 ('undirected' 일시 무향, 'directed' 일시 방향) 입력 인자 1: edges Number 타입의 방향/무향인 간선들의 목록이 담긴 배열 출력 Array 타입을 리턴해야 합니다. 2차원 배열의 인접 행렬 주의 사항 정점 0에서 정점 4로 이어주는 간선이 존재할 경우 정점 1, 2, 3도 존재합니다. 반환하는 인접행렬은 2차원 배열이며, 행(row)는 바깥 배열, 열(column)은 안쪽 배열입니다. l..
[알고리즘/javascript]uglyNumbers 문제 아래와 같이 정의된 ugly numbers 중 n번째 수를 리턴해야 합니다. ugly number는 2, 3, 5로만 나누어 떨어지는 수이다. 1은 1번째 ugly number 이다. 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, ... 입력 인자 1 : n number 타입의 자연수 (n >= 1) 출력 number 타입을 리턴해야 합니다. 주의사항 ugly numbers를 배열에 저장했을 때, n번째 ugly number의 위치는 인덱스 n-1 입니다. 입출력 예시 let result = uglyNumbers(1); console.log(result); // --> 1 result = uglyNumbers(3); console.log(result); // --> 3 Ad..
[알고리즘/javascript] getItemFromTwoSortedArrays 문제 길이가 m, n이고 오름차순으로 정렬되어 있는 자연수 배열들을 입력받아 전체 요소 중 k번째 요소를 리턴해야 합니다. 입력 인자 1 : arr1 자연수를 요소로 갖는 배열 arr1.length는 m 인자 2 : arr2 자연수를 요소로 갖는 배열 arr2.length는 n 인자 3 : k number 타입의 0 이상의 정수 출력 number 타입을 리턴해야 합니다. 주의사항 두 배열의 길이의 합은 1,000,000 이하입니다. 어떤 배열 arr의 k번째 요소는 arr[k-1]을 의미합니다. 입출력 예시 let arr1 = [1, 4, 8, 10]; let arr2 = [2, 3, 5, 9]; let result = getItemFromTwoSortedArrays(arr1, arr2, 6); cons..
[알고리즘/javascript] 큐 - 심화 문제 김코딩은 최근 인쇄할 일이 많이 생겨 창고에서 안 쓰던 프린터를 꺼냈습니다. 이 프린터의 성능을 테스트하여 새로운 프린터를 장만할지 결정하려고 합니다. 김코딩은 프린터의 인쇄 작업 목록의 크기와 최대 용량을 가정하고 각기 다른 용량의 문서를 차례대로 인쇄하여 모든 문서가 인쇄되는데 최소 몇 초가 걸리는지 테스트하기로 했습니다. 프린터 인쇄 작업 목록의 제한사항은 다음과 같습니다. [제한사항] 인쇄 작업 목록은 칸으로 이루어져 있습니다. 각 칸에는 한 개의 문서만 위치할 수 있습니다. 문서는 1초에 한 칸만 이동할 수 있습니다. 인쇄 작업 목록의 크기는 bufferSize이고 최대 용량 capacities 만큼 문서를 담을 수 있습니다. 만약, 인쇄 작업 목록의 크기가 2이고 최대 용량이 10Kib라..
[알고리즘/javascript] 이진탐색 & 변형된 이진탐색 이진탐색 알고리즘 개념 이미 정렬되어 있는 배열에서 탐색 범위를 두 부분으로 나눠 절반씩 좁혀가 필요한 부분에서만 탐색하도록 제한하여 원하는 값을 찾는 알고리즘이다. 이진 탐색은 알고리즘은 left, right, mid 이 세 개의 변수가 필요하다. left은 왼쪽의 끝 인덱스를 뜻하며 right는 오른쪽의 끝 인덱스를 뜻하고 left와 right의 사이는 탐색범위가 된다. mid는 left와 right 범위의 중간점을 뜻하며 탐색하는 범위에서의 중간점이다. 이때 중간점은 (left + right) / 2 란 공식으로 구할 수 있다. 이진 탐색의 시간 복잡도는 O(logN)이며 단순히 매번 절반의 탐색할 데이터를 제외시킨다 생각하면 된다. 탐색범위의 중간 인덱스를 지정하고, 찾고자 하는 값(target)..

반응형