카드 문자열
문제 해결 방법
현재 카드 값
이 비교값
보다 사전순으로 빠르거나 같다면 왼쪽에, 아니라면 오른쪽에 둔다
오답노트
코드
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
const input = fs.readFileSync(filePath).toString().trim().split("\n");
const T = Number(input[0]);
let result = [];
let idx = 1;
for (let t = 0; t < T; t += 1) {
const N = Number(input[idx]);
const cards = input[idx + 1].split(" ");
idx += 2;
let deque = [cards[0]];
for (let i = 1; i < N; i += 1) {
const card = cards[i];
card <= deque[0] ? deque.unshift(card) : deque.push(card);
}
result.push(deque.join(""));
}
console.log(result.join("\n"));
틀렸던 코드
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = require("fs").readFileSync(filePath).toString().trim().split("\n");
let T = +input.shift();
let tcs = input.filter((l) => l.includes(" ")).map((l) => l.split(" "));
const result = [];
function greedy(arr) {
const mid = arr.shift();
let words = mid;
arr.forEach(
(w) => (words = w.charCodeAt(0) < mid.charCodeAt(0) ? w + words : words + w)
);
return words;
}
tcs.forEach((tc) => result.push(greedy(tc)));
console.log(result.join("\n"));