본문 바로가기

PS(Javascript)33

백준 1778 JS Ubiquitous Religions 다국어 문제인데 잘읽어 보면 그냥 UnionFind 문제 인것을 알 수 있다. UnionFind만 알고 있다면 입력 받는게 번거로운 것 외엔 크게 어려움이 없다. const fs = require("fs"); // const input = fs.readFileSync('./input.txt', 'utf-8').trim().split('\n'); const input = fs.readFileSync("/dev/stdin", "utf-8").trim().split("\n"); function solution() { let i = 0; let parent, answer; const findParent = (x) => { if (parent[x] != x) parent[x] = findParent(parent[.. 2023. 9. 16.
백준 JS로 입력 받기 vsc snippet 프로그래머스와는 다르게 백준은 백준은 input을 직접 받아야한다. 이럴 때 매번 문제를 풀 때 마다 새롭게 입력 받는 코드를 작성하는 것은 매우 번거로운 일이기 때문에 snippet을 만들어서 input 받는 코드를 치는 시간을 조금이라도 줄여보고자 한다. { "BOJ input": { "prefix": "boj", "body": [ "const fs = require('fs');", "const input = fs.readFileSync('./input.txt', 'utf-8').trim().split('\\n');", "// const input = fs.readFileSync('/dev/stdin', 'utf-8').trim().split('\\n');\n", "function solution().. 2023. 9. 8.
[프로그래머스] Lv2 괄호 변환 문제 https://school.programmers.co.kr/learn/courses/30/lessons/60058 풀이 가장 먼저 할 일은 p가 빈문자열인지 체크하고 괄호를 u와 v로 분리하기 위한 변수를 선언한다. if(!p) return p; let u, v; u를 균형잡힌 괄호 문자열로 변환하기 위해 p를 순회하면서 균형잡힌 문자열로 분리한다. 이를 위해 cnt하는 변수를 두고 (이면 1을 더하고 )면 1을 빼는 식으로 0일 때까지 반복한다. let cnt = 0; const pl = p.length; for(let i = 0; i < pl; i++) { p[i] === "(" ? cnt++ : cnt--; if(cnt === 0) { u = p.slice(0, i+1); v = p.slice.. 2023. 7. 13.
[프로그래머스] Lv2 방금그곡 문제 https://school.programmers.co.kr/learn/courses/30/lessons/17683 풀이 악보를 재생한 시간만큼 늘렸을 때 네오가 기억한 멜로디인 m이 포함되어 있는지 찾으면 되는 문제이다. 그런데 여기서 한 가지 주의해야 할 점은 반음계인 #의 존재이다. 이를 위해 #이 붙은 음계는 소문자로 바꿔주도록 하자 #C => c이런 식이다. 이를 위해 간단한 정규표현식을 활용해준다. 먼저 필요한 함수 2가지를 선언하겠다. 아까 말한 반음계를 치환하는 함수와 시간의 차이를 계산 하기위한 함수이다. const convert = (s) => { return s.replaceAll(/\w#/g, a => a[0].toLowerCase()); } const timeDiff = (ar.. 2023. 7. 13.