전체 글

전체 글

    [백준 15652] N과 M (4) with Python

    문제 링크 www.acmicpc.net/problem/15652 15652번: N과 M (4) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 풀이 n, m = map(int, input().split()) def nm(n, m, seq=[]): if len(seq) == m: print(" ".join(seq)) else: start = int(seq[-1]) if seq else 1 for i in range(start, n+1): nm(n, m, seq+[str(i)]) nm(n, m) 재귀함수를 통해 seq[-1]부터 n까지의 수를..

    [백준 3986] 좋은 단어 with Node.js

    문제 링크 www.acmicpc.net/problem/3986 3986번: 좋은 단어 이번 계절학기에 심리학 개론을 수강 중인 평석이는 오늘 자정까지 보고서를 제출해야 한다. 보고서 작성이 너무 지루했던 평석이는 노트북에 엎드려서 꾸벅꾸벅 졸다가 제출 마감 1시간 전에 www.acmicpc.net 풀이 const [N, ...arr] = require("fs").readFileSync("/dev/stdin").toString().trim().split("\n"); let count = 0; for (let word of arr) { if (word.length % 2 === 0) { let prevWord = word; let isGoodWord = true; while (prevWord) { const..

    [백준 15651] N과 M (3) with Python

    문제 링크 www.acmicpc.net/problem/15651 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 풀이 n, m = map(int, input().split()) def nm(n, m, seq=[]): if len(seq) == m: print(" ".join(seq)) else: for i in range(1, n+1): nm(n, m, seq+[str(i)]) nm(n, m) 재귀함수를 통해 1부터 n까지의 수를 차례로 순회하면서 하나씩 seq에 추가하여 그 길이가 m만큼 되었을 때마다 출력..

    [백준 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..