전체 글

전체 글

    [백준 1389] 케빈 베이컨의 6단계 법칙 with Node.js

    문제 링크 https://www.acmicpc.net/problem/1389 1389번: 케빈 베이컨의 6단계 법칙 첫째 줄에 유저의 수 N (2 ≤ N ≤ 100)과 친구 관계의 수 M (1 ≤ M ≤ 5,000)이 주어진다. 둘째 줄부터 M개의 줄에는 친구 관계가 주어진다. 친구 관계는 A와 B로 이루어져 있으며, A와 B가 친구라는 뜻 www.acmicpc.net 풀이 const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n'); const [ N, M ] = input.shift().split(' ').map(v => +v); const bacon = new Array(N+1).fill(0); const g..

    VanillaJS로 웹 게임 제작 도전 - 지뢰피하기

    VanillaJS로 웹 게임 제작 도전 - 지뢰피하기

    나는 자바스크립트를 책으로만 공부했다. 자바스크립트의 문법과 개념 이해에만 주력하고 정작 중요한 프로젝트는 하나도 진행하지 않았었다.『모던 자바스크립트 Deep Dive』라는 책을 N회독하면서 실행 컨텍스트, this바인딩, ES6+의 문법을 나름 잘 이해했다고 생각했고, 그렇게 자신감에 찬 상태로 첫 프로젝트를 시작하게 되었다. 💣 지뢰피하기 https://avoidmine-gvwrc.run.goorm.io/ 지뢰피하기는 키보드로 조작하는 지뢰찾기(MineSweeper)라는 컨셉으로 구상한 게임이다. 기존의 지뢰찾기 게임은 마우스로 지뢰가 있는 칸에 깃발을 꽂고 지뢰가 아닌 모든 칸을 다 열면 승리하는 방식이지만, 이 게임은 시작점과 도착점이 있고 WASD키로 자신의 캐릭터를 움직여 지뢰를 피해 도착점..

    [백준 9375] 패션왕 신해빈 with Node.js

    문제 링크 https://www.acmicpc.net/problem/9375 9375번: 패션왕 신해빈 첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로 (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다. www.acmicpc.net 풀이 const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n'); const iterator = input[Symbol.iterator](); let T = +iterator.next().value; w..

    [백준 5525] IOIOI with Python

    문제 링크 https://www.acmicpc.net/problem/5525 5525번: IOIOI N+1개의 I와 N개의 O로 이루어져 있으면, I와 O이 교대로 나오는 문자열을 PN이라고 한다. P1 IOI P2 IOIOI P3 IOIOIOI PN IOIOI...OI (O가 N개) I와 O로만 이루어진 문자열 S와 정수 N이 주어졌을 때, S안에 PN이 몇 www.acmicpc.net 풀이 N = int(input()) M = int(input()) S = input() P = 'IO' * N + 'I' switch = False count = 1 output = 0 for i in range(M): if not switch and S[i] == 'I': switch = True elif switch..

    [백준 17626] Four Squares with Node.js

    문제 링크 https://www.acmicpc.net/problem/17626 17626번: Four Squares 라그랑주는 1770년에 모든 자연수는 넷 혹은 그 이하의 제곱수의 합으로 표현할 수 있다고 증명하였다. 어떤 자연수는 복수의 방법으로 표현된다. 예를 들면, 26은 52과 12의 합이다; 또한 42 + 32 + 1 www.acmicpc.net 풀이 const solve = n => { const dp = new Array(n+1).fill(0); dp[1] = 1; for (let i=2; i

    [백준 11052] 카드 구매하기 with Python

    문제 링크 https://www.acmicpc.net/problem/11052 11052번: 카드 구매하기 첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000) www.acmicpc.net 풀이 import sys N = int(sys.stdin.readline()) card = [0] + list(map(int, sys.stdin.readline().split())) dp = [0]*(N+1) dp[1] = card[1] for i in range(2, N+1): highest = 0 for j in range(1, i//2 + 1): if dp[j] + dp[i-j] > hi..

    [백준 1541] 잃어버린 괄호 with Node.js

    문제 링크 https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 풀이 const solve = expression => { const getSum = arr => { return arr.split(/[\+-]/).map(v => +v).reduce((acc, n) => acc + n, 0); } const firstMinus = expression.indexOf('-'); if (firstMinus === -1) { console.log(get..

    [백준 1931] 회의실 배정 with Node.js

    문제 링크 https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 풀이 const solve = (N, input) => { const schedule = input.map(time => time.split(' ').map(v => +v)).sort((a, b) => { if (a[1] === b[1]) { return a[0] - b[0]; } else return a[1] - b[1]; }); let i = 0; let count = 0; let curEnd = 0; while (i < N) { const [ start, end ] = schedule[i++]; ..

    [백준 1149] RGB거리 with Node.js

    문제 링크 https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 풀이 const solve = (n, rgb) => { dp = [...new Array(n+1)].map(v => new Array(3).fill(0)); dp[1] = rgb[0]; for (let i=2; i cost.split(' ').map(v => +v))); dp[n][0]을 n번째 집을 빨간색으로 칠했을 때 전체 비용의 최솟값, dp[n][1]을 n번..

    [백준 2156] 포도주 시식 with Node.js

    문제 링크 https://www.acmicpc.net/problem/2156 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net 풀이 const solve = (n, wine) => { if (n === 1) return wine[0]; else if (n === 2) return wine[0] + wine[1]; const dp = new Array(n).fill(0); dp[1] = wine[0]; dp[2] = wine[0] + wine[1]; for (let i=3; i +v); console.log(sol..