- 1, 2, 3 순서대로 N 길이의 수열을 만들기 - check 함수를 만드는 방식 let fs = require('fs'); let input = fs.readFileSync('/dev/stdin').toString().split(' '); const N = Number(input); let isOver = false recursive('1'); function check(num) { const length = num.length; for (let idx = 1; idx
const N = 4; const point = [ [0, 1, 2, 3], [4, 0, 5, 6], [7, 1, 0, 2], [3, 4, 5, 0], ]; const startTeam = []; let linkTeam = []; const half = N / 2; const visited = Array(N).fill(0); let min = Infinity; dfs(0); console.log(min); function dfs(index) { // 종료 조건, 원하는 데이터의 형태가 만들어 졌을 때. if (index === half) { let sumOfStartTeam = 0; let sumOfLinkTeam = 0; // 스타트팀에 속하지 않는 사람은 링크팀에 넣는다. for (let i = 1;..
타입스크립트에서 타입을 별도로 선언하는 방법으로는 interface와 type alias가 있는데 이 둘에 대해서 간단하게 알아보려고 합니다. 타입을 표현할 때 interface는 reference type의 타입을 표현한다. type alias는 primitive type, reference type 타입을 모두 표현할 수 있다. 타입을 중복 정의할 때 interface는 선언 병합(declaration merging)이 된다. type alias는 에러가 발생한다. 타입을 확장할 때 interface는 extends 키워드를 사용한다. type alias는 &(intersection) 연산자를 사용한다. 내부 동작을 제외하고 사용하는 관점에서는 이런 차이들이 있는 것 같습니다. 그래서 뭘 쓰면 좋을..
문제의 설명을 그대로 코드로 옮겨보려고 해봤습니다. function solution(order) { let result = 0; let containerIndex = 0; let subContainerIndex = -1; let orderIndex = 0; const length = order.length; const container = Array.from({ length }, (_, i) => i + 1); const subContainer = []; while (true) { if (result === length) break; if (subContainer[subContainerIndex] === order[orderIndex]) { result += 1; subContainer.pop(); su..
문자열에서 0을 제거해주는 함수, 이진수로 표현해주는 함수 2개를 각각 만들어서 해결했습니다. function deleteZero(str) { let newStr = ''; let count = 0; for (let i = 0; i 1) { rest = rest + String(length % 2); length = Math.trunc(len..
처음에 이중 for문으로 풀이를 생각하였으나 효율성에서 통과하지 못하는 문제가 발생했습니다. 그 후에 stack 자료구조를 이용해서 해결하는 방법을 선택했습니다. function solution(numbers) { const result = Array.from({length: numbers.length}, () => -1); const stack = []; for (let i = 0; i 0 && numbers[stack.at(-1)] < numbers[i]){ result[stack.pop()] = numbers[i]; } stack.push(i); } return result; }