(백준) 숫자놀이

hwisaac·2024년 11월 27일
0

코테TIL

목록 보기
20/20

문제링크

https://www.acmicpc.net/problem/1755

문제풀이

const filePath = process.platform === 'linux' ? 0 : './input.txt';
let [M, N] = require('fs')
  .readFileSync(filePath)
  .toString()
  .trim()
  .split(' ')
  .map(Number);

const solve = (M, N) => {
  // 숫자를 영어로 변환하는 함수
  const numberToWords = (num) => {
    const digitWords = [
      'zero',
      'one',
      'two',
      'three',
      'four',
      'five',
      'six',
      'seven',
      'eight',
      'nine',
    ];
    return num
      .toString()
      .split('')
      .map((digit) => digitWords[Number(digit)])
      .join(' ');
  };

  // M부터 N까지 숫자와 영어 단어로 변환한 배열 생성
  let numbers = [];
  for (let i = M; i <= N; i++) {
    numbers.push({ num: i, words: numberToWords(i) });
  }

  // 영어 단어 기준으로 정렬
  numbers.sort((a, b) => a.words.localeCompare(b.words));

  // 정렬된 숫자만 추출
  const sortedNumbers = numbers.map((item) => item.num);

  // 출력 형식에 맞게 10개씩 묶어서 결과 생성
  let result = '';
  for (let i = 0; i < sortedNumbers.length; i++) {
    result += sortedNumbers[i] + ' ';
    if ((i + 1) % 10 === 0) {
      result = result.trim() + '\n';
    }
  }

  return result.trim();
};

console.log(solve(M, N));

0개의 댓글