알고리즘 46

[BOJ]24060 - 병합 정렬1(JS)

풀이const input = require('fs').readFileSync('예제.txt') .toString().trim().split('\n').map((v) => v.split(" ").map((v) => +v)); //N은 배열의 길이 , K는 찾으려는 K번째 비교에서 추가된 값const [[N, K], arr] = input;console.log(input)function merge(left, right) { const result = []; let [i, j] = [0, 0]; while (i  사실 문제조차도 잘 이해가 가지않아 다른분의 풀이를 참고 할 수 밖에 없었다. 처음부터 천천히 코드를 풀이해보자 function mergeSort(arr) { if (arr.length -..

알고리즘 2024.11.06

[BOJ] 25501 - 재귀의 귀재(JS)

재귀 함수란?함수가 자기 자신을 다시 호출하는 함수. 재귀 함수의 장단점장점: 코드가 간결해지고, 수학적으로 정의된 문제(피보나치 수열, 팩토리얼 등)를 직관적으로 구현할 수 있습니다.단점: 호출 스택이 커질 수 있어 메모리를 많이 사용하고, 큰 입력에서는 성능이 떨어질 수 있습니다. 풀이let fs = require("fs");let input = fs.readFileSync('예제.txt').toString().trim().split("\n")let N = input.shift()let cnt = 0;const recursion = (s,l,r) =>{ cnt += 1; if(l >=r ){ return 1; }else if(s[l] != s[r] ){ ret..

알고리즘 2024.11.05

[BOJ] 20920 - 영단어 암기는 괴로워(JS)

풀이let fs = require("fs");let input = fs.readFileSync('예제.txt').toString().trim().split("\n");const [N,M] = input.shift().split(" ").map(Number);input = input.filter(a=> a.length >= M)let map = new Map();for(let i = 0; i a[0])console.log(answer.join("\n"))map을 이용해 빈도수를 구해준후 sort 기능을 이용해 만약 빈도수가 같을시에 단어의 길이까지 같다면 사전순으로 정렬하는 localeCompare를 이용해 사전순으로 정렬을 했고 , 그 뒤에 길이순 , 그뒤로 빈도순으로 정렬해 출력해주었다.

알고리즘 2024.10.11

[BOJ] 26069 - 붙임성 좋은 총총이(JS)

나의 풀이let fs = require("fs");let input = fs.readFileSync('예제.txt').toString().trim().split("\n");const N = input.shift();let meetFriends = [] ; for(let i = 0; i a.split(" ")).flat();let set = new Set(arr);console.log(set.size)결과는 실패 ...set의 사용법이 미숙했던 터라 set를 그냥 배열의 중복을 제거하는 방식으로만 써서 코드가 지저분했다 . 그리고 만약 다음 줄이 총총이를 마주치지않은 두사람이라면 춤을 안출텐데 그냥 총총이를 만난시점의다음 줄을 모두 추가해서 틀린 것 같다. 수정한 풀이let fs = require(..

알고리즘 2024.10.07

[BOJ] 25192 - 인사성 밝은 곰곰이(JS)

나의 풀이let fs = require("fs");let input = fs.readFileSync('예제.txt').toString().trim().split("\n");let N = input.shift();input = input.join(" ");let arr = []let answer = 0;let newArr = input.split("ENTER")for(let i = 0; i  처음에는 이렇게 풀었었다. ENTER를 기준으로 문자열을 나누어 배열로만들고 그 배열에서 set을 이용해 중복을 없애고 수를 카운트하여 계산했다. 결과는 실패... 무엇이 문제인가 찾다가 예시로 ENTER 를 연속으로 추가하니 빈문자열이 set객체에 들어가 그 수를 카운트 하고있었다... 수정한 코드let fs = r..

알고리즘 2024.10.04

[BOJ]4949 - 균형잡힌 세상(JS)

풀이let fs = require("fs");let input = fs.readFileSync('예제.txt').toString().trim().split("\n");let ans = [];for (let x of input) { if (x === ".") { break; } let stack = []; let isBalanced = true; for (let i = 0; i isBalanced를 통해 yes인지 no인지 판단한다.괄호가 나왔을때 만약 "("거나 ,  "[" 라면 스택에 괄호를 추가한다.  닫는 괄호가 나온다면 마지막 스택에 담겨있는 괄호가 소괄호인지 중괄호인지 판단한 다음 맞는 쌍이라면 isBalanced는 true로 유지된다 , 하지만 닫..

알고리즘 2024.08.13