클릭해서 문제 전체 보기🔼
📖 풀이 코드
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().trim().split("\n");
input = input.splice(1);
input.sort((a, b) => a - b);
console.log(input.join("\n"));
📢 풀이 설명
입력 값의 첫째 줄인 N을 splice(1)로 제거하고, sort()함수를 이용해 나머지를 오름차순으로 정렬한다.
💚 추가 학습~
sort 함수 정리하기~~
클릭해서 문제 전체 보기🔼
📖 풀이 코드
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().trim().split("\n");
let sum = input.reduce((acc, cur) => +acc + +cur);
let fakeDwarf = sum - 100;
for (i = 0; i < 8; i++) {
let remainder = fakeDwarf - +input[i];
for (j = 1; i + j < 9; j++) {
if (remainder == +input[i + j]) {
input.splice(i, 1);
input.splice(i + j - 1, 1);
return console.log(input.sort((a, b) => a - b).join("\n"));
}
}
}
📢 풀이 설명
9명의 난쟁이의 키를 다 더하고, 그 값에서 100을 뺀다. 그 값을 fakeDwarf라고 한다.
9명 중 2명의 키를 더했을 때 fakeDwarf의 값과 같다면, 그 둘이 가짜 난쟁이이다.
따라서 그 둘의 값을 splice로 배열에서 제거한 뒤, 나머지를 오름차순으로 출력한다.
클릭해서 문제 전체 보기🔼
📖 풀이 코드
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().trim().split("\n").splice(1);
console.log(input.sort((a, b) => a - b).join("\n"));
📢 풀이 설명
이 문제는 백준에서 node.js로 풀면 메모리 초과로 실패한다. 사이트 내의 메모리 문제이기 때문에 node.js로는 풀 수 없다.
나는 맨 첫 번째 입력 값만 제거하고 sort()로 정렬했는데, 계수정렬(Counting sort) 알고리즘을 통해 풀 수도 있다고 한다. 다음 번에 이 알고리즘을 공부하면 블로그에 기록해야겠다.