연습장

    [프로그래머스 Level 2] 프렌즈4블록 - JavaScript

    [프로그래머스 Level 2] 프렌즈4블록 - JavaScript

    🔗 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/17679 코딩테스트 연습 - [1차] 프렌즈4블록 프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 "프렌즈4블록". 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙 programmers.co.kr ✏️ 풀이 function solution(m, n, board) { board = board.map(row => [...row]); const offset = [[0, 0], [0, 1], [1, 0], [1, 1]]; let count = 0; let flag = true; while (flag) { flag = fals..

    [프로그래머스 Level 3] 네트워크 - JavaScript

    [프로그래머스 Level 3] 네트워크 - JavaScript

    🔗 문제 링크 ✏️ 풀이 function solution(n, computers) { const visited = Array(n).fill(false); const dfs = (start) => { const stack = [start]; while (stack.length) { const index = stack.pop(); if (!visited[index]) { visited[index] = true; computers[index].forEach((v, i) => { if (i !== index && v) { stack.push(i); } }); } } } let count = 0; computers.forEach((v, i) => { if (!visited[i]) { dfs(i); count++;..

    [백준 2573 - Node.js] 빙산

    [백준 2573 - Node.js] 빙산

    🔗 문제 링크 https://www.acmicpc.net/problem/2573 2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 www.acmicpc.net ✏️ 풀이 const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n'); const [N, M] = input.shift().split(' ').map(Number); const iceberg = input.map(v => v.split(' ').map(Number)); const off..

    [백준 1260 - Node.js] DFS와 BFS

    [백준 1260 - Node.js] DFS와 BFS

    🔗 문제 링크 https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net ✏️ 풀이 const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n'); const [N, M, V] = input.shift().split(' ').map(Number); const edges = input.map(v => v.split(' ').map(..

    [백준 16234 - Node.js] 인구 이동

    [백준 16234 - Node.js] 인구 이동

    🔗 문제 링크 https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net ✏️ 풀이 const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n'); const [N, L, R] = input.shift().split(' ').map(Number); const land = input.map(v => v.split(' ').map(Number)); cons..

    [백준 1707 - Node.js] 이분 그래프

    [백준 1707 - Node.js] 이분 그래프

    🔗 문제 링크 https://www.acmicpc.net/problem/1707 1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V와 간선의 개수 E가 빈 칸을 사이에 www.acmicpc.net ✏️ 풀이 const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n'); const K = +input.shift(); const SET_A = 1; const SET_B = 2; const dfs = (start, graph, visited) => { visited[start] = SET_A..

    [프로그래머스 Level 2] 문자열 압축 - JavaScript

    [프로그래머스 Level 2] 문자열 압축 - JavaScript

    🔗 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr ✏️ 풀이 function solution(s) { let compression = s; for (let i = 1; i 1 ? `${count}${target}` : target); target = matched; count = 1; } } } result.push(count > 1 ? `${count}${target}` : target)..

    [프로그래머스 Level 2] 위장 - JavaScript

    [프로그래머스 Level 2] 위장 - JavaScript

    🔗 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 programmers.co.kr ✏️ 풀이 function solution(clothes) { const clothList = clothes.reduce((acc, [, type]) => { acc[type] = (acc[type] || 0) + 1; return acc; }, {}); return Object.values(clothList).reduce((acc, v) => acc * (v + 1), 1) - 1; } 옷의 종류별 개수를 구하고, (각 종류별 개수 + 1)을 모두 곱한 것에서 1을 빼면 정답이다. 각 종류별로 옷을 고를 때, 해당 종류의 옷을 입지..

    [백준 1520 - Node.js] 내리막길

    [백준 1520 - Node.js] 내리막길

    🔗 문제 링크 https://www.acmicpc.net/problem/1520 1520번: 내리막 길 첫째 줄에는 지도의 세로의 크기 M과 가로의 크기 N이 빈칸을 사이에 두고 주어진다. 이어 다음 M개 줄에 걸쳐 한 줄에 N개씩 위에서부터 차례로 각 지점의 높이가 빈 칸을 사이에 두고 주어진다. www.acmicpc.net ✏️ 풀이 const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n'); const [M, N] = input.shift().split(' ').map(Number); const map = input.map(v => v.split(' ').map(Number)); const offset = ..

    [백준 11725 - Node.js] 트리의 부모 찾기

    [백준 11725 - Node.js] 트리의 부모 찾기

    🔗 문제 링크 https://www.acmicpc.net/problem/11725 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net ✏️ 풀이 const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n'); const N = +input.shift(); const edges = input.map(v => v.split(' ').map(Number)); const tree = [...Array(N + 1)].map(() => []); const relations = []; edges.for..