연습장
[백준 2644 - Node.js] 촌수계산
🔗 문제 링크 https://www.acmicpc.net/problem/2644 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어 www.acmicpc.net ✏️ 풀이 const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n'); const n = +input.shift(); const [person1, person2] = input.shift().split(' '); const m = +input.shift(); const r..
[백준 16236 - Node.js] 아기 상어
🔗 문제 링크 https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net ✏️ 풀이 const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n'); const N = +input.shift(); const water = input.map(v => v.split(' ').map(Number)); const fishCount = []; let babySharkPo..
[백준 2583 - Node.js] 영역 구하기
🔗 문제 링크 https://www.acmicpc.net/problem/2583 2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오 www.acmicpc.net ✏️ 풀이 const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n'); const [M, N, K] = input[0].split(' ').map(Number); const paper = [...Array(M)].map(() => Array(N).fill(false)); ..
[백준 2206 - Node.js] 벽 부수고 이동하기
🔗 문제 링크 https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net ✏️ 풀이 const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n'); const [N, M] = input[0].split(' ').map(Number); const map = input.slice(1).map(row => row.split('').map(Numbe..
[프로그래머스 Level 2] 뉴스 클러스터링 - JavaScript
🔗 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/17677 코딩테스트 연습 - [1차] 뉴스 클러스터링 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브 programmers.co.kr ✏️ 풀이 function solution(str1, str2) { const getCount = (str) => { return [...str] .slice(0, -1) .map((v, i) => (v + str[i + 1]).toLowerCase()) .filter(v => !v.match(/[^a-z]/g)) .reduc..
[백준 11403 - Node.js] 경로 찾기
🔗 문제 링크 https://www.acmicpc.net/problem/11403 11403번: 경로 찾기 가중치 없는 방향 그래프 G가 주어졌을 때, 모든 정점 (i, j)에 대해서, i에서 j로 가는 경로가 있는지 없는지 구하는 프로그램을 작성하시오. www.acmicpc.net ✏️ 풀이 const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n'); const N = +input[0]; const graph = input.slice(1).map(v => v.split(' ').map(Number)); const output = [...Array(N)].map(() => Array(N).fill(0)); con..
[프로그래머스 Level 2] 오픈채팅방 - JavaScript
🔗 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42888 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr ✏️ 풀이 function solution(record) { const output = []; const userInfo = {}; const message = { Enter: '님이 들어왔습니다.', Leave: '님이 나갔습니다.' } record.forEach(log => { const [cmd, id, name] = log.split(' '..
[백준 7562 - Node.js] 나이트의 이동
🔗 문제 링크 https://www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net ✏️ 풀이 const offset = [ [-1, -2], [-2, -1], [-2, 1], [-1, 2], [1, 2], [2, 1], [2, -1], [1, -2] ]; const bfs = (start, [ex, ey], l, visited) => { const queue = [start]; while (queue.length) { const [x, y, depth] = queu..
[백준 1987 - Node.js] 알파벳
🔗 문제 링크 https://www.acmicpc.net/problem/1987 1987번: 알파벳 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으 www.acmicpc.net ✏️ 풀이 const input = require('fs').readFileSync('/dev/stdin').toString().trim().split("\n"); const [R, C] = input[0].split(' ').map(v => +v); const board = input.slice(1).map((v) => v.split("")); const offsetX = ..
[백준 7569 - Node.js] 토마토
문제 링크 https://www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net 풀이 const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n'); const [M, N, H] = input[0].split(' ').map(v => +v); const boxes = input.slice(1).reduce((acc, v, i) => { acc[Math.f..