[node.js] 백준 정렬 알고리즘 풀이 모음

송히·2023년 8월 2일
0
post-thumbnail

정렬 알고리즘을 사용한 문제 모음


🔍 2750번: 수 정렬하기

클릭해서 문제 전체 보기🔼

📖 풀이 코드

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 함수 정리하기~~


🔍 2309번: 일곱 난쟁이

클릭해서 문제 전체 보기🔼

📖 풀이 코드

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로 배열에서 제거한 뒤, 나머지를 오름차순으로 출력한다.


🔍 10989번: 수 정렬하기 3

클릭해서 문제 전체 보기🔼

📖 풀이 코드

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) 알고리즘을 통해 풀 수도 있다고 한다. 다음 번에 이 알고리즘을 공부하면 블로그에 기록해야겠다.

profile
데브코스 프론트엔드 5기

0개의 댓글

관련 채용 정보