연습장
[백준 9656] 돌 게임 2 with Node.js
문제 링크 www.acmicpc.net/problem/9656 9656번: 돌 게임 2 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. www.acmicpc.net 풀이 const input = +require("fs").readFileSync("/dev/stdin").toString().trim(); if (input % 2 === 0) console.log("SK"); else console.log("CY"); 돌이 2개 남았을 때 1개를 가져가고, 4개 남았을 때는 1개 또는 3개 어떻게 가져가도 승리한다. 둘이 번갈아서 돌을 가져가는데 가져가는 개수가 모두 홀수이므로, 돌의 개수가 짝수라면 먼저 시작하는 상근이는 항상 돌의 개수가 짝수로 남는 상황에 놓이기 때문에 항상 승..
[백준 10799] 쇠막대기 with Python
문제 링크 www.acmicpc.net/problem/10799 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net 풀이 parenthesis = input().replace("()", "L") laser = [] count = 0 for i in parenthesis: if i == "(": laser.append(0) elif i == ")": cur_count = laser.pop() count += cur_count + 1 if laser: laser[-1] += cur_count else: if laser: lase..
[백준 2331] 반복수열 with Node.js
문제 링크 www.acmicpc.net/problem/2331 2331번: 반복수열 첫째 줄에 반복되는 부분을 제외했을 때, 수열에 남게 되는 수들의 개수를 출력한다. www.acmicpc.net 풀이 const [A, P] = require("fs").readFileSync("/dev/stdin").toString().trim().split(" ").map(v => +v); const arr = [A]; while (true) { const curNum = String(arr[arr.length-1]); const nextNum = curNum.split("").reduce((acc, v) => acc + Number(v)**P, 0); if (arr.includes(nextNum)) { console..
[백준 14889] 스타트와 링크 with Python
문제 링크 www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 풀이 import sys import itertools N = int(sys.stdin.readline()) skill = [[x for x in map(int, sys.stdin.readline().split())] for _ in range(N)] comb = map(set, itertools.combinations([x for x in range(N)], N//2)) min_diff = 100*(N-1)*2 for ..
[백준 3085] 사탕 게임 with Node.js
문제 링크 www.acmicpc.net/problem/3085 3085번: 사탕 게임 첫째 줄에 상근이가 먹을 수 있는 사탕의 최대 개수를 출력한다. www.acmicpc.net 풀이 const input = require("fs").readFileSync("/dev/stdin").toString().trim().split("\n"); const n = +input[0]; const candy = input.slice(1).map(v => v.split("")); function swap(i, j, k) { const coord = [[-1, 0], [1, 0], [0, -1], [0, 1]]; const here = candy[i][j]; if (candy[i+coord[k][0]] && candy[i..
[백준 1049] 기타줄 with Node.js
문제 링크 www.acmicpc.net/problem/1049 1049번: 기타줄 첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주 www.acmicpc.net 풀이 const input = require("fs").readFileSync("/dev/stdin").toString().trim().split(/\s/); const n = +input[0]; const m = +input[1]; const arr = input.slice(2).map(v => +v); const pkgPrice = []; const pcPrice = []; for (let i..
[백준 1966] 프린터 큐 with Python
문제 링크 www.acmicpc.net/problem/1966 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net 풀이 import sys class Document: def __init__(self, importance): self.importance = int(importance) self.is_target = False t = int(sys.stdin.readline()) answer = [] for _ in range(t): n, m = map(int, sys.stdin.readline().split()) q..
[백준 13305] 주유소 with Node.js
문제 링크 www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 풀이 const input = require("fs").readFileSync("/dev/stdin").toString().trim().split("\n"); const n = +input[0]; const distance = input[1].split(" ").map(v => BigInt(v)); const price = input[2].split(" ").map(v => BigInt..
[백준 15650] N과 M (2) with Python
문제 링크 www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 풀이 import sys import copy n, m = map(int, sys.stdin.readline().split()) def recursion(n, m, start, seq): if len(seq) == m: print(" ".join(map(str, seq))) for i in range(start, n+1): temp_seq = copy.copy(seq) + [i] recursion(..
[백준 11652] 카드 with Node.js
문제 링크 www.acmicpc.net/problem/11652 11652번: 카드 준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지 www.acmicpc.net 풀이 const [n, ...arr] = require("fs").readFileSync("/dev/stdin").toString().trim().split("\n"); function mergeSort(arr) { if (arr.length BigInt(v))); let maxCount = 0; let curCount = 0; let prevNumber = ""; let largest = 2*..