분류 전체보기
-
[백준 16395번] 파스칼의 삼각형 (feat. NodeJS)Development/Program Solving 2021. 1. 8. 16:29
16395번: 파스칼의 삼각형 파스칼의 삼각형은 이항계수를 삼각형 형태로 배열한 것인데, 블레즈 파스칼(1623-1662)을 따라 이름 붙여졌다. 단순한 형태로, 파스칼의 삼각형은 다음과 같은 방법으로 만들 수 있다. N번째 행 www.acmicpc.net 파스칼 삼각형의 어떤 항목의 값은 해당 항목의 위쪽 두 개 항목 값의 합이다. 결국 모든 항목들은 같은 공식으로 이루어져있고, 이것을 분할 정복과 기저 조건을 사용하는 재귀로 풀 수 있다. 분할 정복 : 어떤 항목의 값은 해당 항목의 위쪽 두 개 항목 값의 합이므로, 이 공식을 사용하여 알고리즘을 작성한다. 기저 조건 : 행이 1이면 1을 반환하고, 행과 열이 1이면 1을 반환한다. const fs = require("fs"); const input ..
-
[백준 10872번] 팩토리얼 (feat. NodeJS)Development/Program Solving 2021. 1. 7. 02:05
10872번: 팩토리얼 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. 풀이 3! = 3 * 2 * 1 2! = 2 * 1 이런식으로 연산하는 것을 팩토리얼이라고 한다. n-1을 곱하는 것이 반복되므로 재귀를 사용해서 알고리즘을 작성하면 된다. const fs = require("fs"); const input = fs.readFileSync("/dev/stdin"); const n = parseInt(input); const getFactorial = (n) => { if (n === 1 || n === 0) { return 1; } retur..
-
[백준 10870번] 피보나치 수 (feat. NodeJS)Development/Program Solving 2021. 1. 7. 01:37
10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 문제 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597 n이 주어..
-
[백준 2292번] 벌집 (feat. NodeJS)Development/Program Solving 2021. 1. 6. 02:27
2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net 범위가 1, 2~7, 8~19, 20~37, 38~61로 증가한다. 공식으로 나타내면 이전값 + 범위카운트 * 6 이다. const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); let input; const onInput = (value) => (input = Number(value)); const on..
-
[백준 1712번] 손익분기점 (feat. NodeJS)Development/Program Solving 2021. 1. 6. 01:12
1712번: 손익분기점 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 www.acmicpc.net 아래와 같이 무한루프를 돌려서 1씩 수량을 증가시켜서 했더니, 시간초과 결과가 나왔다. 입력이 21억 이하이므로 이런식으로 무한루프를 사용한 알고리즘을 작성하면 안된다. const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); let input; const onInput = (value) => (inp..
-
[백준 단계별로 풀어보기] 7. 문자열 (feat. NodeJS)Development/Program Solving 2020. 12. 29. 03:08
11654번: 아스키 코드 const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); let inputValue; const onInput = (value) => (inputValue = value); const onClose = () => { const result = []; for (let i = 0; i < 26; i++) { result[i] = inputValue.indexOf(String.fromCharCode(i + 97)); } console.log(result.join(" ")); process.exit(); }; rl.on..
-
[백준 단계별로 풀어보기] 6. 함수 (feat. NodeJS)Development/Program Solving 2020. 12. 27. 22:56
4673번: 셀프 넘버 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net CASE 1 시간: 108.917ms const selfNumber = []; const main = () => { for (let i=1; i { for (let i=1; i number = Number(input); const onClose = () => { let firstNum = 0; let answer = []; for (let i = 1; i = 3){ const numbers..
-
[Javascript] 배열 메서드 정리Development/Javascript 2020. 12. 26. 01:55
1. Array.From() 유사 배열 객체나 반복 가능한 객체를 얕게 복사해서 새로운 객체를 만든다. const a = [1,2,3,4]; const b = Array.from(a); console.log(b === a); // false 2. Array.prototype.slice(begin, end) 기존 배열을 변경하지 않고 해당 배열의 일부를 반환한다. const a = [1,2,3,4,5]; console.log(a.slice(1,3)); // [2, 3] 시작 인덱스와 종료 인덱스를 매개변수로 받는다. 종료 인덱스의 -1 인덱스까지 추출된다. 인자를 생략하면 기존 배열의 얇은 복사본을 반환한다. const a = [1,2,3,4,5]; console.log(a.slice()); // [1, ..