
전체 글
Programmers / Level 2 / 타겟 넘버 / JS
문제 설명 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 주어지는 숫자의 개수는 2개 이상 20개 이하입니다. 각 숫자는 1 이상 50 이하인 자연수입니다. 타겟 넘버는 1 이상 100..
Programmers / Level 3 / N으로 표현 / JS
문제 설명 아래와 같이 5와 사칙연산만으로 12를 표현할 수 있습니다. 12 = 5 + 5 + (5 / 5) + (5 / 5) 12 = 55 / 5 + 5 / 5 12 = (55 + 5) / 5 5를 사용한 횟수는 각각 6,5,4 입니다. 그리고 이중 가장 작은 경우는 4입니다. 이처럼 숫자 N과 number가 주어질 때, N과 사칙연산만 사용해서 표현 할 수 있는 방법 중 N 사용횟수의 최솟값을 return 하도록 solution 함수를 작성하세요. 제한사항 N은 1 이상 9 이하입니다. number는 1 이상 32,000 이하입니다. 수식에는 괄호와 사칙연산만 가능하며 나누기 연산에서 나머지는 무시합니다. 최솟값이 8보다 크면 -1을 return 합니다. 입출력 예 N number return 5 1..
Algorithm / 정렬 / Selection Sort (선택 정렬)
Selection Sort (선택 정렬) function selection_sort1(arr) { console.log(`before selection sorting: ${[...arr]}`); let cnt = 0; for (let i = 0; i < arr.length; i++) { let smaller_idx = i; for (let j = i + 1; j < arr.length; j++) { if (arr[j] < arr[smaller_idx]) { smaller_idx = j; } } // swap [arr[i], arr[smaller_idx]] = [arr[smaller_idx], arr[i]]; cnt++; } console.log(`after selection sorting: ${[...a..
Algorithm / 정렬 / Bubble Sort (버블 정렬)
버블 정렬 (Bubble Sort) // Sinking Sort 라고도 하는데, // 버블정렬과 방법은 같지만 내림차순으로 정렬한다. function bubble_sort1(arr) { console.log(`before bubble sorting: ${[...arr]}`); let cnt = 0; for (let i = 0; i arr[j + 1]) { let temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } ..

백준 / 그래프 / 2583번 / 영역 구하기 / JS
문제 눈금의 간격이 1인 M×N(M,N≤100)크기의 모눈종이가 있다. 이 모눈종이 위에 눈금에 맞추어 K개의 직사각형을 그릴 때, 이들 K개의 직사각형의 내부를 제외한 나머지 부분이 몇 개의 분리된 영역으로 나누어진다. 예를 들어 M=5, N=7 인 모눈종이 위에 과 같이 직사각형 3개를 그렸다면, 그 나머지 영역은 와 같이 3개의 분리된 영역으로 나누어지게 된다. 와 같이 분리된 세 영역의 넓이는 각각 1, 7, 13이 된다. M, N과 K 그리고 K개의 직사각형의 좌표가 주어질 때, K개의 직사각형 내부를 제외한 나머지 부분이 몇 개의 분리된 영역으로 나누어지는지, 그리고 분리된 각 영역의 넓이가 얼마인지를 구하여 이를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 M과 N, 그리고 K가 빈칸을 ..
Sliding Window - minSubArrayLen
Q. 배열의 연속된 요소들로 이루어진 합 중에서 주어진 수의 이상의 값을 가지는 배열 중 가장 작은 길이를 구하시오 const minSubArrayLen = (arr, n) => { let sum = 0; let len = Infinity; let p1 = 0; let p2 = 0; while(p1 = n) { // 기존의 len과 현재의 len중에 최솟값 구하기 len = Math.min(len, p2-p1..