본문 바로가기

JS 코딩테스트 문제29

[JS] 코딩 테스트 문제 : 바둑이 승차 [DFS] 문제 : 바둑이 승차(DFS) 문제 설명 철수는 그의 바둑이들을 데리고 시장에 가려고 한다. 그런데 그의 트럭은 C킬로그램 넘게 태울수가 없다. 철수는 C를 넘지 않으면서 그의 바둑이들을 가장 무겁게 태우고 싶다. N마리의 바둑이와 각 바둑이의 무게 W가 주어지면, 철수가 트럭에 태울 수 있는 가장 무거운 무게를 구하는 프로그램을 작성하세요. ▣ 입력설명 첫 번째 줄에 자연수 C(1 2024. 1. 28.
[JS] 코딩 테스트 문제 : 합이 같은 부분집합 [DFS] 문제 : 합이 같은 부분집합(DFS) 문제 설명 N개의 원소로 구성된 자연수 집합이 주어지면, 이 집합을 두 개의 부분집합으로 나누었을 때 두 부분집합의 원소의 합이 서로 같은 경우가 존재하면 “YES"를 출력하고, 그렇지 않으면 ”NO"를 출력하는 프로그램을 작성하세요. 둘로 나뉘는 두 부분집합은 서로소 집합(Disjoint Set)이며, 두 부분집합을 합하면 입력으로 주어진 원래의 집합이 되어야 합니다. 예를 들어 {1, 3, 5, 6, 7, 10}이 입력되면 {1, 3, 5, 7} = {6, 10} 으로 두 부분집합의 합이 16으로 같은 경우가 존재하는 것을 알 수 있다. ▣ 입력설명 첫 번째 줄에 자연수 N(1 a + b, 0); let n = arr.length; // 배열의 인덱스를 의미할 파.. 2024. 1. 24.
[JS] 코딩 테스트 문제 : 부분 집합 구하기 [DFS] 문제 : 부분집합 구하기(DFS) 문제 설명 자연수 N이 주어지면 1부터 N까지의 원소를 갖는 집합의 부분집합을 모두 출력하는 프로그램을 작성하세요. ▣ 입력설명 첫 번째 줄에 자연수 N(1 0); // 현재 원소 L 값이 현재 원소값 L 이 n + 1 이 되는 경우 재귀함수를 종료 function DFS(L) { if (L === n + 1) { let tmp = ""; // ch[L] 값이 1인 경우 그 배열의 인덱스값을 문자열(tmp)에 추가하며 for (let i = 1; i 0) answer.push(tmp.trim()); } // 체크 배열에 L번째(ch[L]) 값이 0인 경우와 1인 경우로 나누어 재귀 함수 호출 else { ch[L] = 1; DFS(L + 1); ch[L] = 0; DFS.. 2024. 1. 23.
[JS] 코딩 테스트 문제 : 뮤직비디오 [2진 탐색, 결정알고리즘] 문제 : 뮤직비디오(결정알고리즘) 문제 설명 지니레코드에서 가수의 라이브 동영상을 DVD로 만들어 판매하려 한다. DVD에는 총 N개의 곡이 들어가는데, DVD에 녹화할 때에는 라이브에서의 순서가 그대로 유지되어야 한다. 순서가 바뀌는 것을 가수가 매우 싫어한다. 즉, 1번 노래와 5번 노래를 같은 DVD에 녹화하기 위해서는 1번과 5번 사이의 모든 노래도 같은 DVD에 녹화해야 한다. 또한 한 노래를 쪼개서 두 개의 DVD에 녹화하면 안된다. 지니레코드 입장에서는 이 DVD가 팔릴 것인지 확신할 수 없기 때문에 이 사업에 낭비되는 DVD를 가급적 줄이려고 한다. 고민 끝에 지니레코드는 M개의 DVD에 모든 동영상을 녹화하기로 하였다. 이 때 DVD의 크기(녹화 가능한 길이)를 최소로 하려고 한다. 그리.. 2024. 1. 17.
[JS] 코딩 테스트 문제 : 이분검색 [이진 탐색] 문제 : 이분검색 문제 설명 임의의 N개의 숫자가 입력으로 주어집니다. N개의 수를 오름차순으로 정렬한 다음 N개의 수 중 한 개의 수인 M이 주어지면 이분검색으로 M이 정렬된 상태에서 몇 번째에 있는지 구하는 프로그램을 작성하세요. 단 중복값은 존재하지 않습니다. ▣ 입력설명 첫 줄에 한 줄에 자연수 N(3 [num, index + 1]); console.log(sortArr); // 배열의 값이 하나 남을 때 까지 반복 while (sortArr.length > 0) { let centerIdx = Math.floor(sortArr.length / 2); // 기준이 될 인덱스 const [num, index] = sortArr[centerIdx]; // 기준이 될 숫자와 번호 console.log(.. 2024. 1. 16.
[JS] 코딩 테스트 문제 : 결혼식 문제 : 결혼식 문제 설명 현수는 다음 달에 결혼을 합니다. 현수는 결혼식 피로연을 장소를 빌려 3일간 쉬지 않고 하려고 합니다. 피로연에 참석하는 친구들 N명의 참석하는 시간정보를 현수는 친구들에게 미리 요구했습니다. 각 친구들은 자신이 몇 시에 도착해서 몇 시에 떠날 것인지 현수에게 알려주었습니다. 현수는 이 정보를 바탕으로 피로연 장소에 동시에 존재하는 최대 인원수를 구하여 그 인원을 수용할 수 있는 장소를 빌리려고 합니다. 여러분이 현수를 도와주세요. 만약 한 친구가 오는 시간 13, 가는시간 15라면 이 친구는 13시 정각에 피로연 장에 존재하는 것이고 15시 정각에는 존재하지 않는다고 가정합니다. ▣ 입력설명 첫째 줄에 피로연에 참석할 인원수 N(5 a - b); let endTimeArr =.. 2024. 1. 14.
[JS] 코딩 테스트 문제 : Special Sort(구글 인터뷰) [버블정렬] 2024. 1. 9.
[JS] 코딩 테스트 문제 : 버블정렬 문제 : 버블정렬 문제 설명 N 개의 숫자가 입력되면 오름차순으로 정렬하여 출력하는 프로그램을 작성하세요. 정렬하는 방법은 버블정렬입니다. ▣ 입력설명 첫 번째 줄에 자연수 N(1= 0; i--) { let left = answer[0]; for (let j = 1; j answer[j]) { answer[j - 1] = answer[j]; answer[j] = left; } left = answer[j]; } console.log(answer); } // 보완코드 for (let i = arr.length - 1; i > 0; i--) { console.log(i); for (let j = 0; j arr[j + 1]) { [arr[j], arr[j + 1].. 2024. 1. 8.
[JS] 코딩 테스트 문제 : 선택 정렬 문제 : 선택 정렬 문제 설명 N개이 숫자가 입력되면 오름차순으로 정렬하여 출력하는 프로그램을 작성하세요. 정렬하는 방법은 선택정렬입니다. ▣ 입력설명 첫 번째 줄에 자연수 N(1 2024. 1. 8.
[JS] 코딩 테스트 문제 : 교육과정 설계 [큐] 문제 : 교육과정 설계 문제 설명 현수는 1년 과정의 수업계획을 짜야 합니다. 수업중에는 필수과목이 있습니다. 이 필수과목은 반드시 이수해야 하며, 그 순서도 정해져 있습니다. 만약 총 과목이 A, B, C, D, E, F, G가 있고, 여기서 필수과목이 CBA로 주어지면 필수과목은 C, B, A과목이며 이 순서대로 꼭 수업계획을 짜야 합니다. 여기서 순서란 B과목은 C과목을 이수한 후에 들어야 하고, A과목은 C와 B를 이수한 후에 들어야 한다는 것입니다. 현수가 C, B, D, A, G, E로 수업계획을 짜면 제대로 된 설계이지만 C, G, E, A, D, B 순서로 짰다면 잘 못 설계된 수업계획이 됩니다. 수업계획은 그 순서대로 앞에 수업이 이수되면 다음 수업을 시작하다는 것으로 해석합니다. 수업계.. 2024. 1. 8.
[JS] 코딩 테스트 문제 : 공주 구하기 [큐] 문제 : 공주 구하기 문제 설명 정보 왕국의 이웃 나라 외동딸 공주가 숲속의 괴물에게 잡혀갔습니다. 정보 왕국에는 왕자가 N명이 있는데 서로 공주를 구하러 가겠다고 합니다. 정보왕국의 왕은 다음과 같은 방법으로 공주를 구하러 갈 왕자를 결정하기로 했습니다. 왕은 왕자들을 나이 순으로 1번부터 N번까지 차례로 번호를 매긴다. 그리고 1번 왕자부터 N 번 왕자까지 순서대로 시계 방향으로 돌아가며 동그랗게 앉게 한다. 그리고 1번 왕자부터 시계방향으로 돌아가며 1부터 시작하여 번호를 외치게 한다. 한 왕자가 K(특정숫자)를 외치면 그 왕자는 공주를 구하러 가는데서 제외되고 원 밖으로 나오게 된다. 그리고 다음 왕자부터 다시 1부터 시작하여 번호를 외친다. 이렇게 해서 마지막까지 남은 왕자가 공주를 구하러 갈 .. 2024. 1. 8.
[JS] 코딩 테스트 문제 : 쇠막대기 [스택] 문제 : 쇠막대기 문제 설명 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저의 배치는 다음 조건을 만족한다. • 쇠막대기는 자신보다 긴 쇠막대기 위에만 놓일 수 있다. - 쇠막대기를 다른 쇠막대기 위에 놓는 경우 완전히 포함되도록 놓되, 끝점은 겹치지 않도록 놓는다. • 각 쇠막대기를 자르는 레이저는 적어도 하나 존재한다. • 레이저는 어떤 쇠막대기의 양 끝점과도 겹치지 않는다. 아래 그림은 위 조건을 만족하는 예를 보여준다. 수평으로 그려진 굵은 실선은 쇠막대기이고, 점은 레이저의 위치, 수직으로 그려진 점선 화살표는 레이저의 발사 방향이다. 이러한 레이저와 쇠막대기의 .. 2024. 1. 6.