전체 글

전체 글

    [백준 7568] 덩치 with Node.js

    문제 링크 www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 풀이 const [n, ...arr] = require("fs").readFileSync("/dev/stdin").toString().trim().split("\n"); const men = arr.map((v, i) => ({weight: v.split(" ")[0], height: v.split(" ")[1], rank: 1})); for (let i=0; i

    [백준 1181] 단어 정렬 with Node.js

    문제 링크 www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 풀이 const [n, ...words] = require("fs").readFileSync("/dev/stdin").toString().trim().split("\n"); Array.from(new Set(words)) .sort((a, b) => a > b ? 1 : (a a.length - b.length) .forEach(i =..

    [백준 11866] 요세푸스 문제 0 with Python

    문제 링크 www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net 풀이 import sys n, k = map(int, sys.stdin.readline().split()) lst = [x for x in range(1, n+1)] permutation = [] idx = 0 while lst: idx += k - 1 if idx >= len(lst): idx %= len(lst) deleted = lst[idx] lst.remove(deleted) permutation.append(deleted) print("") 1부터 n까지 담긴 리스트를 만들..

    [백준 1427] 소트인사이드 with Node.js

    문제 링크 www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하고자하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 const arr = require("fs").readFileSync("/dev/stdin").toString().trim().split("").map(i=>parseInt(i)); const nums = Array(10).fill(0); arr.forEach(i => nums[9-i] += 1); let sorted = ""; for (let i=0; i

    [백준 2609] 최대공약수와 최소공배수 with Node.js

    문제 링크 www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 풀이 const [a, b] = require("fs").readFileSync("/dev/stdin").toString().trim().split(" ").map(i=>parseInt(i)); let i = a; let j = b; while (i % j !== 0) { let n = i % j; if (n !== 0) { i = j; j = n; } } console.log(j) console.log(a*b/j) 유클리드 호제법을 활용하여 최대공약수를 구한다. 그..

    [백준 2164] 카드2 with Python

    문제 링크 www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 풀이 import sys from collections import deque dq = deque([x for x in range(1, int(sys.stdin.readline())+1)]) while len(dq) > 1: dq.popleft() dq.append(dq.popleft()) print(dq[0]) deque에 1부터 n까지 정수를 입력하고 카드를 빼고 옮기는 행위를 deque에 카드가..

    [백준 10988] 팰린드롬인지 확인하기 with Node.js

    문제 링크 www.acmicpc.net/problem/10988 10988번: 팰린드롬인지 확인하기 첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다. www.acmicpc.net 풀이 const word = require("fs").readFileSync("/dev/stdin").toString().trim(); const len = word.length/2; const left = word.slice(0, parseInt(len)); const right = word.slice(Number.isInteger(len)?len:parseInt(len)+1); if (left === right.split("").reverse().jo..

    [백준 10798] 세로읽기 with Node.js

    문제 링크 www.acmicpc.net/problem/10798 10798번: 세로읽기 총 다섯줄의 입력이 주어진다. 각 줄에는 최소 1개, 최대 15개의 글자들이 빈칸 없이 연속으로 주어진다. 주어지는 글자는 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’ www.acmicpc.net 풀이 const words = require("fs").readFileSync("/dev/stdin").toString().trim().split("\n"); const maxLength = Math.max(...words.map(i => i.length)); let vertical = ""; for (let i=0; i i.length));와 같음

    [백준 11653] 소인수분해 with Python

    문제 링크 www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 풀이 import sys n = int(sys.stdin.readline()) if n > 1: nums = [x for x in range(2, int(n**0.5)+1)] primes = [] while nums: prime = nums[0] for i in nums: if i % prime == 0: nums.remove(i) if prime not in primes: primes.append(prime) while n > 1: if primes: if n % primes[0] == 0: n //= primes[0..

    [백준 1977] 완전제곱수 with Node.js

    문제 링크 www.acmicpc.net/problem/1977 1977번: 완전제곱수 M과 N이 주어질 때 M이상 N이하의 자연수 중 완전제곱수인 것을 모두 골라 그 합을 구하고 그 중 최솟값을 찾는 프로그램을 작성하시오. 예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 완 www.acmicpc.net 풀이 const input = require("fs").readFileSync("/dev/stdin").toString().trim().split("\n"); const m = parseInt(input[0]); const n = parseInt(input[1]); const arr = []; for (let i=Math.ceil(Math.sqrt(m)); i acc + i, 0))..