1. 단어 정렬 (백준 1181번)
링크
자바스크립트에서 문자열 비교 원리를 모르고 있었다. 진짜 하루종일 삽질하고 일일히 문자열 ASCII로 비교해가면서 풀었는데, 그냥 sort()
함수 써도 문제 없다는 걸 알고 해탈했다.
먼저 단어의 길이 별로 정렬을 해놓은 객체를 만들고, 그 객체를 순회하며 문자열 배열을 정렬하여 출력하는 방식으로 풀었다.
내 답안
const fs = require("fs");
const input = fs
.readFileSync(process.platform === "linux" ? "/dev/stdin" : "./input.txt")
.toString()
.trim()
.split("\n");
const N = Number(input[0]);
let words = {};
for (let i = 1; i <= N; i++) {
const word = input[i];
const length = word.length;
if (!words[length]) {
words[length] = [word];
}
if (words[length].includes(word)) continue;
words[length].push(word);
}
for (const [l, w] of Object.entries(words)) {
if (w.length <= 1) {
console.log(w[0]);
continue;
}
const temp = w.sort();
for (let i = 0; i < temp.length; i++) {
console.log(temp[i]);
}
}
2. 영화감독 숌 (백준 1436번)
링크
진짜.. 한숨만 나옴. 너무 꼬아서 생각하다 보니까 문제의 본질을 잊었던 것 같다.
그냥 브루트 포스 방식으로 풀면 쉽게 풀리는 데 계속 수의 규칙이나 메모리 초과 안뜨게 하려고 삽질했었다.
내 답안
const fs = require("fs");
const input = fs
.readFileSync(process.platform === "linux" ? "/dev/stdin" : "./input.txt")
.toString()
.trim();
const N = Number(input);
let number = 0;
let count = 0;
while (true) {
number += 1;
if (number.toString().includes("666")) {
count += 1;
}
if (count === N) break;
}
console.log(number);