전체 글

전체 글

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

    [백준 1874] 스택 수열 with Python

    문제 링크 www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 풀이 import sys n = int(sys.stdin.readline()) seq = [int(sys.stdin.readline()) for _ in range(n)] stack = [] plus_minus = [] maximum = 0 is_impossible = False for num in seq: if max..

    [백준 1620] 나는야 포켓몬 마스터 이다솜 with Node.js

    문제 링크 www.acmicpc.net/problem/1620 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 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, n+2); const pokemonMap = new Map(arr.map((v, i) => ..

    [백준 15649] N과 M (1) with Python

    문제 링크 www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 풀이 import sys import copy n, m = map(int, sys.stdin.readline().split()) def f(nums, m, seq=[]): if len(seq) == m: print(" ".join(map(str, seq))) for i in nums: temp_nums = copy.copy(nums) temp_nums.remove(i) temp_seq = copy...

    [백준 1120] 문자열 with Node.js

    문제 링크 www.acmicpc.net/problem/1120 1120번: 문자열 길이가 N으로 같은 문자열 X와 Y가 있을 때, 두 문자열 X와 Y의 차이는 X[i] ≠ Y[i]인 i의 개수이다. 예를 들어, X=”jimin”, Y=”minji”이면, 둘의 차이는 4이다. 두 문자열 A와 B가 주어진다. 이때, A의 www.acmicpc.net 풀이 const [a, b] = require("fs").readFileSync("/dev/stdin").toString().trim().split(" "); let min = a.length; for (let i=0; i

    [백준 9461] 파도반 수열 with Python

    문제 링크 www.acmicpc.net/problem/9461 9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net 풀이 import sys t = int(sys.stdin.readline()) n = [int(sys.stdin.readline()) for _ in range(t)] dp = [0]*101 dp[1] , dp[2], dp[3], dp[4], dp[5] = 1, 1, 1, 2, 2 for i in range(6, max(n)+1): dp[i] = dp[i-1] + dp[i-5] for i in n: pri..

    [백준 18258] 큐 2 with Node.js

    문제 링크 www.acmicpc.net/problem/18258 18258번: 큐 2 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 풀이 const input = require("fs").readFileSync("/dev/stdin").toString().trim().split("\n"); class Queue { constructor() { this.head = null; this.tail = null; this.size = 0; } createNode(value, prev, next) { return ..

    [백준 11727] 2×n 타일링 2 with Python

    문제 링크 www.acmicpc.net/problem/11727 11727번: 2×n 타일링 2 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. www.acmicpc.net 풀이 import sys n = int(sys.stdin.readline()) dp = [0]*1001 dp[1] , dp[2] = 1, 3 for i in range(3, 1001): dp[i] = dp[i-1] + dp[i-2] * 2 print(dp[n]%10007) 2 x n 직사각형을 채우는 경우의 수를 f(n)이라고 할 때 f(n)은 아래의 두 경우의 수의 합과 같다. 1. f(n-1)에 2 x 1 타일을 붙이는 경우 ..