99클럽 코테 스터디 15일차 TIL : 그리디

17__COLIN·2024년 11월 11일
0

99클럽

목록 보기
14/34
post-thumbnail

카드 문자열

문제 해결 방법

  • 현재 카드 값비교값보다 사전순으로 빠르거나 같다면 왼쪽에, 아니라면 오른쪽에 둔다

오답노트

  • 비교하고자 하는 문자가 무엇인가

코드

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 = [];

// greedy
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"));
profile
조금씩 꾸준히

0개의 댓글

관련 채용 정보