본문 바로가기
[JS] 백준 18258번 큐2 문제 링크 https://www.acmicpc.net/problem/18258 풀이 전략 정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 큐를 이해하고 이를 구현하는 문제이다. 큐의 동작원리를 완전히 이해하고 있어야한다. 코드 const fs = require("fs"); const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n"); class Node { constructor(data) { this.data = data; this.next = null; } } class Queue { constructor() { this.head = null; this.rear = null; this.l.. 2022. 6. 14.
[JS] 2018카카오 : 압축 프로그래머스 LEVEL2 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/17684 풀이 전략 1. 길이가 1인 모든 단어를 포함하도록 사전을 초기화한다. 2. 사전에서 현재 입력과 일치하는 가장 긴 문자열 w를 찾는다. 3. w에 해당하는 사전의 색인 번호를 출력하고, 입력에서 w를 제거한다. 4. 입력에서 처리되지 않은 다음 글자가 남아있다면(c), w+c에 해당하는 단어를 사전에 등록한다. 문제에서 말하는 그대로 구현하면 되는 문제이다. 나는 너무 어렵게 생각하여 한참을 돌아갔다. 코드 function solution(msg) { const answer = []; const dict = new Map(); let idx = 0; while (idx < 26) { dict.. 2022. 6. 13.
[JS] 백준 1874번 스택 수열 문제 링크 https://www.acmicpc.net/problem/1874 풀이 전략 1부터 n까지의 수를 스택에 넣었다가 뽑아 늘어놓음으로써, 하나의 수열을 만들 수 있다. 이때, 스택에 push하는 순서는 반드시 오름차순을 지키도록 한다고 하자. 임의의 수열이 주어졌을 때 스택을 이용해 그 수열을 만들 수 있는지 없는지, 있다면 어떤 순서로 push와 pop 연산을 수행해야 하는지를 알아낼 수 있다. 이를 계산하는 프로그램을 작성하라. 코드 const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); const input = []; rl.. 2022. 6. 11.
[JS] 백준 4949번 균형잡힌 세상 문제 링크 https://www.acmicpc.net/problem/4949 풀이 전략 모든 오른쪽 괄호들은 자신과 짝을 이룰 수 있는 왼쪽 괄호가 존재한다. (다른 괄호 일 수도 있음) 모든 괄호들의 짝은 1:1 매칭만 가능하다. 즉, 괄호 하나가 둘 이상의 괄호와 짝지어지지 않는다. 코드 const fs = require("fs"); const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n"); input.pop(); solution(input); function solution(arr) { const answerArr = []; for (const str of arr) { answerArr.push(confirm(str)); }.. 2022. 6. 11.
[JS] 백준 1707번 이분 그래프 문제 링크 https://www.acmicpc.net/problem/1707 풀이 전략 https://gmlwjd9405.github.io/2018/08/23/algorithm-bipartite-graph.html 우선 이분그래프에 대해서 자세히 알 필요가 있다. 이 블로그에 잘 정리해주신 분이 계셔서 상대적으로 쉽게 개념을 이해할 수 있었다. 다시 설명해보자면, 그래프가 존재하는데 이 그래프를 둘로 나누었을 때 모든 정점이 간선으로 연결되어있으면 이분그래프이다. 즉, 같은 그룹에 속한 정점은 인접하지 않아야한다. 코드 const fs = require("fs"); const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n"); c.. 2022. 6. 10.
[JS] 2021카카오 : 거리두기 확인하기 프로그래머스 LEVEL2 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/81302 풀이 전략 대기실은 5개이며, 각 대기실은 5x5 크기입니다. 거리두기를 위하여 응시자들 끼리는 맨해튼 거리가 2 이하로 앉지 말아 주세요. 단 응시자가 앉아있는 자리 사이가 파티션으로 막혀 있을 경우에는 허용합니다. P를 하나의 정점으로 생각하여 dfs또는 bfs로 탐색하면 될듯하였다. 공간이 5 * 5로 정해져있기 때문에 부담없이 떠올릴 수 있었다. 코드 function solution(places) { const answer_arr = []; for (const t_case of places) { const startXY = []; for (let i = 0; i < 5; i++) { f.. 2022. 6. 10.
[JS] 백준 2206번 벽 부수고 이동하기 문제 링크 https://www.acmicpc.net/problem/2206 풀이 전략 맵이 주어졌을 때, 최단 경로를 구해 내는 프로그램을 작성하시오. 최단경로는 맵에서 가장 적은 개수의 칸을 지나는 경로를 말하는데, 이때 시작하는 칸과 끝나는 칸도 포함해서 센다. (1, 1)과 (N, M)은 항상 0이라고 가정하자. 만약에 이동하는 도중에 한 개의 벽을 부수고 이동하는 것이 좀 더 경로가 짧아진다면, 벽을 한 개 까지 부수고 이동하여도 된다. 코드 const fs = require("fs"); const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n"); class Node { constructor(data) { this.data.. 2022. 6. 9.
[JS] 백준 16928번 뱀과 사다리 게임 문제 링크 https://www.acmicpc.net/problem/16928 풀이 전략 게임은 크기가 10×10이고, 총 100개의 칸으로 나누어져 있는 보드판에서 진행된다. 보드판에는 1부터 100까지 수가 하나씩 순서대로 적혀져 있다. 도착한 칸이 사다리면, 사다리를 타고 위로 올라간다. 뱀이 있는 칸에 도착하면, 뱀을 따라서 내려가게 된다. 레이어가 i번 칸에 있고, 주사위를 굴려 나온 수가 4라면, i+4번 칸으로 이동해야 한다. 게임판의 상태가 주어졌을 때, 100번 칸에 도착하기 위해 주사위를 굴려야 하는 횟수의 최솟값을 구해보자. 코드 const fs = require("fs"); const input = fs .readFileSync("/dev/stdin") .toString() .tri.. 2022. 6. 9.
[JS] 백준 7562번 나이트의 이동 문제 링크 https://www.acmicpc.net/problem/7562 풀이 전략 각 테스트 케이스마다 나이트가 최소 몇 번만에 이동할 수 있는지 출력한다. 나이트가 이동할 수 있는 경우의 수를 이전에 bfs를 이동하였을 때와 같이 배열을 생성한다. 그 이외에는 다른 bfs문제와 같다. 코드 const fs = require("fs"); const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n"); const t = +input.shift(); solution(input); function solution(arr) { let idx = 0; const dx = [1, 2, 2, 1, -1, -2, -2, -1]; const dy.. 2022. 6. 7.