알고리즘 풀이

    [JAVASCRIPT] 백준 1181번 문제 풀이

    ❗ 조건 조건1. 문자열의 길이가 짧은 것부터 조건2. 문자열의 길이가 같으면 사전 순으로 ❗ 풀이 let input = require('fs').readFileSync('dev/stdin').toString().trim().split('\n'); let setarr = [...new Set(input)]; setarr.shift(); let result = setarr.sort().sort((a, b) => a.length - b.length).join("\n"); console.log(result) 1. Set()을 이용한 중복 제거 2. shift()를 이용한 단어의 개수 값 제거 3. let result => 중복과 단어의 개수 값을 제거한 배열을 사전순으로 정렬하고 단어순으로 정렬한 후 join..

    [JAVASCRIPT] 백준 1764번 문제 풀이

    ❗ 조건 조건 1. 듣도 못한 사람과 보도 못한 사람의 명단은 중복되는 이름이 없음 -> set() 활용 조건 2. 듣보잡의 수와 그 명단은 사전순으로 출력 -> sort() 활용 조건 3. 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어짐 조건 4. 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. let input = require('fs').readFileSync('dev/stdin').toString().trim().split('\n'); const [N, M] = input.shift().split(' '); let n_set = new Set(); let m_set = new Set(); for(let i..

    [JAVASCRIPT] 백준 1475번 문제 풀이

    ❗ 조건 1. 6은 9로 뒤집어 쓸 수 있고 9는 6으로 뒤집어서 쓸 수 있다 = 6,9는 동일한 숫자를 취급한다는 말이기 때문에 6의 누적 값과 9의 누적 값을 더한 후 2로 나눈 뒤 반올림 하면 6과 9를 동일한 숫자로 취급할 수 있음 2. 카드팩에서 가장 많이 쓰는 수를 기준으로 하면 카드팩을 몇 장 쓰는지 알 수 있음 let input = require('fs').readFileSync('dev/stdin').toString().trim().split(''); function objectFunc(arr) { let card = {6:0, 9:0} for(const el of arr) { card[el] = (card[el] || 0) + 1; } card[6] = Math.ceil((card[6]..

    [JAVASCRIPT] 백준 10610번 문제 풀이

    ❗ 조건 조건 1. 각 자리의 수 합이 3의 배수 조건 2. 오름차순 정렬시 배열의 0번 인덱스에는 0이 있어야 30의 배수 const input = require('fs').readFileSync('10610.txt').toString().trim(); let mirco = input.split("").sort(); let result = input.split("").sort((a, b) => b - a).join(''); mirco[0] != 0 ? console.log(-1) : sortMircoArray(mirco); function sortMircoArray(num) { let sum_num = 0 num.forEach((element, index) => { sum_num += parseInt(..

    [JAVASCRIPT] 백준 9095번 문제 풀이

    문제 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 1+1+1+1 1+1+2 1+2+1 2+1+1 2+2 1+3 3+1 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다. 출력 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. 예제 입력 1 3 4 7 10 예제 출력 1 7 44 274 const [n, ...input] = require('fs').readFileSync('dev/stdin').t..

    [JAVASCRIPT] 백준 17202번 문제 풀이

    문제 어린시절 다들 한 번씩은 이름으로 궁합을 본 적이 있을 것이다. 이것과 비슷한 방식으로 중앙대학교에는 핸드폰 번호 궁합을 보는 것이 유행이라고 한다. 핸드폰 번호 궁합을 보기 위해서는 먼저 궁합을 보고싶은 두 중앙대생 A와 B의 핸드폰 번호에서 맨 앞의 010과 "-"(하이픈)을 모두 제외한 후, A부터 시작하여 한 숫자씩 번갈아가면서 적는다. 그리고 인접한 두 숫자끼리 더한 값의 일의 자리를 두 숫자의 아래에 적어나가면서 마지막에 남는 숫자 2개로 궁합률을 구하게 된다. 예를 들어, 아래의 그림과 같이 A의 번호가 010-7475-9336 이고, B의 번호가 010-3619-5974 이면, 7346715995393764에서 시작하여 070386484822030, 77314022204233, 404..

    [JAVASCRIPT] 백준 4150번 문제 풀이

    문제 피보나치 수열은 다음과 같이 그 전 두 항의 합으로 계산되는 수열이다. 첫 두 항은 1로 정의된다. f(1) = 1, f(2) = 1, f(n > 2) = f(n − 1) + f(n − 2) 정수를 입력받아, 그에 해당하는 피보나치 수를 출력하는 프로그램을 작성하여라. 예제 입력 1 100 예제 출력 1 354224848179261915075 ❗ 풀이 let input = require('fs').readFileSync('input.txt').toString().split('\n'); let count = Number(input[0]); let fibonacci = [0,1]; let sum = 0; for (let i = 1 ; i

    [JAVASCRIPT] 백준 4673번 문제 풀이

    문제 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 만들 수 있다. 예를 들어, 33으로 시작한다면 다음 수는 33 + 3 + 3 = 39이고, 그 다음 수는 39 + 3 + 9 = 51, 다음 수는 51 + 5 + 1 = 57이다. 이런식으로 다음과 같은 수열을 만들 수 있다. 33, 39, 51, 57, 69, 84, 96, 111, 114, 120, 123, 129, 141, ... n을 d(n)의 생성자라..