개발

개발/코딩테스트

[백준] 좋은수열 - 2661

- 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

개발/코딩테스트

[백준] 스타트와 링크 - 14889

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;..

개발/코딩테스트

[백준] 블랙잭 - 2798

완전탐색 & 백트래킹 문제부터 풀어보고 있다. const fs = require("fs"); const input = fs.readFileSync("./input.txt").toString().trim().split("\n"); const [N, M] = input[0].split(" ").map(Number); const cards = input[1].split(" ").map(Number); let max = 0; const numbers = cards; const selectedCount = 3; const combinations = getCombinations(numbers, selectedCount); for (const combination of combinations) { const sum ..

개발/TypeScript

[TypeScript] interface vs type alias에 대한 개인적인 생각

타입스크립트에서 타입을 별도로 선언하는 방법으로는 interface와 type alias가 있는데 이 둘에 대해서 간단하게 알아보려고 합니다. 타입을 표현할 때 interface는 reference type의 타입을 표현한다. type alias는 primitive type, reference type 타입을 모두 표현할 수 있다. 타입을 중복 정의할 때 interface는 선언 병합(declaration merging)이 된다. type alias는 에러가 발생한다. 타입을 확장할 때 interface는 extends 키워드를 사용한다. type alias는 &(intersection) 연산자를 사용한다. 내부 동작을 제외하고 사용하는 관점에서는 이런 차이들이 있는 것 같습니다. 그래서 뭘 쓰면 좋을..

개발/코딩테스트

[프로그래머스] [3차] n진수 게임

const formationMap = { 0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 'A', 11:'B', 12:'C', 13:'D', 14:'E', 15:'F' } // n진법을 0에서부터 m까지 만들어준다 function generateFormation(n, m) { let result = ''; let rest = ''; for (let i = 0; i = n) { rest += formationMap[value % n]; value..

개발/코딩테스트

[프로그래머스] 택배상자

문제의 설명을 그대로 코드로 옮겨보려고 해봤습니다. 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; }

유승완
'개발' 카테고리의 글 목록