본문 바로가기

알고리즘119

[완전탐색] 순열, 조합, 부분집합, 백트래킹 JS로 구현하기 순열 permutation 순서를 따짐, 시간 복잡도 O(n!) [1,2,3]의 순열 [ [ 1, 2 ], [ 1, 3 ], [ 2, 1 ], [ 2, 3 ], [ 3, 1 ], [ 3, 2 ] ] function getPermutation(arr, count) { if (count === 1) { return arr.map((e) => [e]); } const result = []; arr.forEach((selected) => { const rest = arr.filter((e) => e !== selected); // 선택된 걸 제외한 남은 것들로 만든 순열을 구한다 const newPermutation = getPermutation(rest, count - 1); // 선택된것과 남은 것으로 만들.. 2024. 1. 31.
[Softeer] 동계 테스트 시점 예측 JS https://softeer.ai/practice/6281 북위 65도. 스웨덴의 소도시 아르예플로그(Arjeplog)에 자리한 동계 테스트 센터. 겨울 내내 얼음 두께가 1M 내외로 유지되는 광할한 얼음 호수와 그냥 걷기조차 힘든 눈길을 무대로 현대자동차그룹 연구원들은 극한 환경 속에서 더 나은 차량 성능을 확보하기 위해 제동안정성, 주행안정성, ADAS 기능 등에 대한 다양한 평가를 숨가쁘게 이어가고 있다. 이 곳은 기온이 너무 추워서 아침에 출근해보면 테스트 차량들 위에 큰 눈얼음이 생겨 있다. 정상적인 테스트를 위해서는 커다란 얼음이 어느정도 녹고 난 뒤에 가능한데, 차량 마다 당일의 테스트 가능 시점을 알기 위한 예측 프로그램을 제작 중에 있다. 예측 프로그램은 N×M (5 ≤ N, M ≤ 10.. 2024. 1. 31.
[Softeer] 통근버스 출발 순서 검증하기 JS https://softeer.ai/practice/6257 현대자동차그룹 연구소에서는 임직원들의 편의를 위해 출퇴근 통근 버스를 제공하고 있다. 퇴근 시간이 되면 연구소 주차장에는 수 많은 버스들이 일렬로 주차되어 있다. 퇴근 버스는 번호순서 대로 출발해야 하는데, 주차장은 폭이 좁아 앞의 버스가 모두 나가야 뒤의 버스가 나갈 수 있는 구조로 되어 있다. 버스를 순서에 맞게 출발시키기 위해, 연구소 주차장의 맞은편에 임시 주차장을 추가로 건설하였다. 이렇게 만든 임시 주차장은 출입구가 하나밖에 없는 데다가, 폭이 좁아서 스택(Stack)처럼 맨 처음 들어간 버스는 맨 마지막에 나올 수 있다. 또한, 한 번 임시 주차장으로 이동했던 버스는 다시 원래의 주차장으로 이동할 수 없다. 위와 같은 상황에서 퇴근 .. 2024. 1. 30.
[Softeer] 진정한 효도 JS https://softeer.ai/practice/7374 남우는 어버이날을 맞아 부모님의 일을 돕기로 하였습니다. 남우의 부모님께서는 농사를 지으시기에, 남우는 땅을 일구는 일을 도우려고 합니다. 남우에게 할당된 땅은 3 * 3 크기의 격자로 이루어져 있으며, 각 땅의 높이는 1이상 3이하의 정수값으로 이루어져 있습니다. 부모님께서 농사를 지을 땅의 크기는 1 * 3이며, 농사를 짓기 위해서는 해당 영역 내 땅의 높이가 전부 동일해야 합니다. 따라서 남우는 특정 땅의 높이를 낮추거나 높여, 3 * 3 격자 내에 부모님께서 농사를 지을 수 있는 영역이 최소 1곳 이상 생기도록 만들려고 합니다. 남우가 특정 땅의 높이를 1만큼 낮추거나 높이는데 1만큼의 비용이 소요된다고 했을 때, 부모님께서 농사를 지으실.. 2024. 1. 30.
[Softeer] 회의실 예약 JS 문제 요점 N개의 회의실, 9~18시, 시 단위, M개의 회의, 소문자이름 회의실 별 빈 시간대 출력 풀이 크기가 18이고 1로 이루어진 배열을 만든다 예약 기록들을 보며 배열에서 이미 예약된 부분은 0으로 변경한다 방 별 예약가능한 range를 찾는다 (배열의 1인 부분) Object객체를 key로 오름차순 정렬하기 Object.keys(객체).sort().reduce((newObj, curr) => { newObj[curr] = 객체[curr]; return newObj; }, {}); 전체코드 const readline = require('readline'); const rl = readline.createInterface({ input : process.stdin, output : process... 2024. 1. 30.
[Softeer] GBC JS풀이 https://softeer.ai/practice/6270 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai 문제 글로벌 비즈니스 센터(GBC, Global Business Center)는 현대자동차그룹 통합 사옥이다. 지하 7층, 지상 105층, 높이 약 570m의 규모로 2026년 하반기에 완공을 목표로 현재 공사 중에 있다. 이러한 초고층 높이의 빌딩에는 초고층 승강기가 들어가야 한다. 엘리베이터 정비공인 광우는 0m 부터 100m까지 일정 구간들의 엘리베이터 속도를 검사하는 업무를 맡게 되었다. 빌딩에서 운영되는 엘리베이터 구간은 N개의 구간으로 나뉘며 해당 구간의 제한 속도이 주어진다. 구간의 총 합은 100m 이며 각 구간별 구간의 길이와 제한 속도 모두 양의 정수로 주어진.. 2024. 1. 29.