티스토리 뷰

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

 

2870번: 수학숙제

종이에서 찾은 숫자의 개수를 M이라고 하면, 출력은 M줄로 이루어져야 한다. 각 줄에는 종이에서 찾은 숫자를 하나씩 출력해야 한다. 이때, 비내림차순으로 출력해야 한다. 비내림차순은 내림차

www.acmicpc.net

const fs = require('fs');
const input = fs.readFileSync("./dev/stdin").toString().split('\n');
input.shift();
const answer = [];

input.forEach(v => {
  let str = ''
  for (let i = 0; i < v.length; i++) {
    if (v.charCodeAt(i) >= 48 && v.charCodeAt(i) <= 57) {
      str += v[i];
    } else {
      if (str != '') {
        while (str.length > 1 && str[0] == '0') {
          str = str.substring(1,)
        }
        answer.push(str);
        str = '';
      }
    }
  }
  if (str != '') {
    while (str.length > 1 && str[0] == '0') {
      str = str.substring(1,)
    }
    answer.push(str);
  }
})


const check = (a, b) => {
  if (a.length > b.length) {
    return 1;
  } else if (a.length < b.length) {
    return -1;
  } else {
    const A = a.split('').map(Number);
    const B = b.split('').map(Number);
    for (let i = 0; i < A.length; i++) {
      if (A[i] < B[i]) {
        return -1;
      } else if (A[i] > B[i]) {
        return 1;
      }
    }
    return 1;
  }
}

console.log(answer.sort((a, b) => check(a, b)).join('\n'))
728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함