연습장

    [백준 5585] 거스름돈 with Node.js

    문제 링크 www.acmicpc.net/problem/5585 5585번: 거스름돈 타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사 www.acmicpc.net 풀이 const money = parseInt(require("fs").readFileSync("/dev/stdin").toString()); let change = 1000 - money; let count = 0; const coins = [500, 100, 50, 10, 5, 1]; for (let i=0; i

    [백준 1920] 수 찾기 with Python

    문제 링크 www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 풀이 import sys n = int(sys.stdin.readline()) arr = sorted(list(map(int, sys.stdin.readline().split()))) m = int(sys.stdin.readline()) arr2 = list(map(int, sys.stdin.readline().split())) def search(nu..

    [백준 2231] 분해합 with Node.js

    문제 링크 www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 풀이 const num = parseInt(require("fs").readFileSync("/dev/stdin").toString()); let start = num - (num+"").length*9; let answer = 0; if (start ..

    [백준 9012] 괄호 with Python

    문제 링크 www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 풀이 def vps(ps): left = 0 for i in ps: if i == "(": left += 1 else: left -= 1 if left < 0: return "NO" if left == 0: return "YES" else: return "NO" n = int(input()) for i in range(n): print(vps(input())) for문에..

    [백준 10828] 스택 with Python

    문제 링크 www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 풀이 import sys n = int(input()) stack = [] for i in range(n): command = sys.stdin.readline().split() if len(command) == 2: stack.append(int(command[1])) else: if command[0] == "pop": if stack: print(stack.pop()) else..

    [백준 10870] 피보나치 수 5 with Node.js

    문제 링크 www.acmicpc.net/problem/10870 10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 풀이 const fs = require("fs"); const n = fs.readFileSync("/dev/stdin"); function fibonacci(n) { if (n == 0) return 0; else if (n == 1) return 1; else return fibonacci(n-1) + fibonacci(n-2); } console.log(f..

    [백준 2798] 블랙잭 with Node.js

    문제 링크 www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 풀이 const input = require("fs").readFileSync("/dev/stdin").toString().trim().split(/\s/).map(item => parseInt(item)); const n = input[0]; const m = input[1]; const cards = input.slice(2); let sum = 0; for(i=0..

    [백준 1010] 다리 놓기 with Python

    문제 링크 www.acmicpc.net/problem/1010 1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다. www.acmicpc.net 풀이 import math t = int(input()) for i in range(t): n, m = map(int, input().split()) print(math.factorial(m) // (math.factorial(m-n) * math.factorial(n))) 다리를 짓는 경우의 수는 다리가 놓일 위치 M개 중에 다리의 개수인 N개를 고르는 경우의 수이므로, mCn과 같다. mCn = ..

    [백준 11721] 열 개씩 끊어 출력하기 with Node.js

    문제 링크 www.acmicpc.net/problem/11721 11721번: 열 개씩 끊어 출력하기 첫째 줄에 단어가 주어진다. 단어는 알파벳 소문자와 대문자로만 이루어져 있으며, 길이는 100을 넘지 않는다. 길이가 0인 단어는 주어지지 않는다. www.acmicpc.net 풀이 const fs = require("fs"); let input = fs.readFileSync("/dev/stdin").toString(); while(input.length) { console.log(input.slice(0, 10)); input = input.slice(10); } 지금까지 Python으로만 문제를 풀어왔다. 처음으로 JavaScript로 푸는 문제다. 입력 받는 것부터 문제였다. 백준 언어 도움말에 ..