목록전체 글 (118)
상권's

문제 정수를 요소로 갖는 배열과 특정 구간을 입력받아, 해당 구간 내에서 최소값을 리턴해야 합니다. Advanced Advanced1: 주어진 배열에서 특정 구간의 최소값을 구하는 단순한 알고리즘은 단순 순회(O(N))입니다. 같은 배열에 대해서 다양한 구간에 대한 최소값을 구할 경우, 단순 순회는 O(N^2) 입니다(구간의 개수도 N개라 가정할 경우). 적절한 자료구조를 통해 이와 같은 구간 조회에 대한 반복 작업을 효율적(O(N * logN))으로 수행할 수 있습니다. 구간 트리(segment tree)에 대해서 학습하시고, Advanced 테스트 케이스를 통과해 보시기 바랍니다.트리를 객체 또는 배열로 구현할 수 있습니다. 객체로 구현하는 것이 보다 직관적이기 때문에 객체로 먼저 도전하시기 바랍니다..
Associations Sequelize는 '1 대 1', '1 대 다', '다 대 다' 관계를 지원합니다. The A.hasOne(B.foreign key) association A와 B의 '1 대 1' 관계를 만들어 주는데, foreign key는 B에서 정의된다. The A.belongsTo(B) association A와 B의 '1대 1' 관계를 만들어 주는데, foreign key는 A에서 정의된다. The A.hasMany(B) association A와 B의 '1 대 다' 관계를 만들어 주는데, foreign key는 B에서 정의된다. 이 세 가지 호출을 통해 Sequilize는 적절한 모델에 외래 키를 자동으로 추가한다(이미 존재하지 않는 경우). The A.belongsToMany(B, ..
이번 한 주는 지난 주에 학습했던 SQL로 과제를 진행했고, sequelize, MVC 패턴, ORM, MongoDB 에 대해서 학습했습니다. SQL 을 이용해서 원하는 정보를 찾고, 수정하고, 삽입하는 게 처음에는 쉬웠지만, 과제를 진행하면서 원하는 정보가 까다로워지니 JOIN 부분이 쉽지 않았습니다. MVC는 전체적인 흐름을 이해하는 데에 학습하는 시간이 좀 걸렸습니다. 가장 어려웠던 건 sequelize 를 활용하는 것이었습니다. 다행스럽게 sprint hour을 통해서 전반적인 프로세스를 이해할 수 있었습니다. boiler-plate를 할 때, MongoDB에서 데이터를 찾고, 수정하는 부분을 학습해서 자신있었지만, 데이터베이스에 조금 더 깊게 들어가니 복잡해져서 자신감은 다시 숨어들었습니다. 학..

문제 정수를 요소로 갖는 배열을 입력받아 오름차순으로 정렬하여 리턴해야 합니다. 입력 인자 1 : arr number 타입을 요소로 갖는 배열arr[i]는 -100,000 이상 100,000 이하의 정수arr.length는 100,000 이하 출력 number 타입을 요소로 갖는 배열을 리턴해야 합니다. 주의사항 힙 정렬을 구현해야 합니다.arr.sort 사용은 금지됩니다.입력으로 주어진 배열은 중첩되지 않은 1차원 배열입니다.최소 힙(min heap)을 구현해야 합니다.최소 힙 구현을 위해 선언된 함수들(getParentIdx, insert, removeRoot)을 전부 완성해야 합니다.swap, getParentIdx, insert, removeRoot를 전부 사용해야 합니다.swap, binaryH..

문제 정수를 요소로 갖는 배열을 입력받아 이진 힙(binary heap)*을 리턴해야 합니다. 이진 힙(binary heap)은 노드의 값이 특정한 순서를 가지고 있는 완전 이진 트리(Complete Binary Tree)입니다. 완전 이진 트리는 이진 트리의 (마지막 레벨 또는 마지막 깊이를 제외하고) 모든 레벨이 노드로 가득 채워져 있어야 합니다. 마지막 레벨은 왼쪽부터 차례대로 채워져 있습니다.이진 힙에서 부모 노드의 값이 (이진 트리이므로 2개의) 자식 노드의 값보다 큰 경우를 최대 힙(max heap), 반대의 경우를 최소 힙(min heap)이라고 합니다. 주의사항 최대 힙(max heap)을 구현해야 합니다. 입력으로 주어진 배열은 중첩되지 않은 1차원 배열입니다. 최대 힙 구현을 위해 선언..
문제 세로와 가로의 길이가 각각 M, N인 방의 지도가 2차원 배열로 주어졌을 때, 1은 장애물을 의미하고 0 이동이 가능한 통로를 의미합니다. 로봇은 한 번에 임의의 k칸 직진과 90도 회전 중 1가지 동작을 할 수 있다. 로봇의 현재 위치와 방향, 목표 지점과 방향이 함께 주어집니다. 이 때, 방향은 위쪽이 1, 오른쪽이 2, 아래쪽이 3, 왼쪽이 4로 주어집니다. 로봇이 목표 지점까지 도달해 목표 방향으로 회전하는 데 필요한 동작의 수를 리턴해야 합니다. 입력 인자 1 : room 배열을 요소로 갖는 배열room.length는 Mroom[i]는 number 타입을 요소로 갖는 배열room[i].length는 Nroom[i][j]는 세로로 i, 가로로 j인 지점의 정보를 의미room[i][j]는 0 ..

문제 세로와 가로의 길이가 각각 M, N인 마을지도가 배열로 주어졌을 때, '1'은 주민이 있는 집을 의미하고 '0'은 주민이 없는 땅을 의미합니다. 이 마을은 소문이 시작되면 하루에 상하좌우 한 칸 바로 옆에 있는 집으로 퍼집니다. 특정 주민의 집 (R, C)으로부터 어떤 소문이 시작될 경우, 마을 전체로 소문이 퍼지는데 걸리는 시간(일)을 리턴해야 합니다. 주의사항 M, N은 100 이하의 자연수입니다.row, col에는 항상 주민이 살고 있습니다.모든 집은 연결되어 있습니다. 즉, 한 집에서 다른 집으로 가는 경로가 항상 존재합니다.village를 그래프로 구현하는 함수가 주어집니다. direction으로 상하좌우를 움직일 수 있는 방법을 제시해준다. count라는 변수를 만들어서 일수를 체크한다...

-오늘의 코플릿 2021.11.15- 정수를 요소로 갖는 배열을 입력받아 다음의 조건을 만족하는 LSCS*를 리턴해야 합니다. LSCS: 주어진 배열의 연속된 부분 배열*의 합을 구한다고 할 때, 이 중 가장 큰 값(Largest Sum of Contiguous Subarray) 연속된 부분 배열들: 배열 [1,2,3]의 연속 부분 배열은 [1], [1, 2], [1, 2, 3], [2], [2, 3], [3] 입니다. 주의사항 배열의 모든 요소가 음수인 경우도 있습니다. 가장 기본적인 방법은 멱집합을 통해서 배열을 다 만든 다음에, 해당 배열들의 모든 요소들을 더하고, 가장 큰 값을 리턴한다. 첫 수도코드 => 처음 문제를 봤을 때, 연속 된 부분 배열에 대한 예시가 멱집합을 구현해 놓은 거랑 똑같아 ..