sm 기술 블로그

81. 1181(단어정렬) 본문

문제/백준_자바스크립트

81. 1181(단어정렬)

sm_hope 2022. 6. 17. 09:21
let input = require('fs').readFileSync(0).toString().trim().split("\n");

input.shift();

let inputArr = Array.from(new Set(input));

inputArr.sort((a, b) => {
  let aLength = a.length;
  let bLength = b.length;

  if(aLength != bLength){
      if(aLength > bLength){
        return 1;
      }
      else if(aLength < bLength){
        return -1;
      }
  }

  for(let i=0; i<aLength; i++){
    if(a.charAt(i) > b.charAt(i)){
      return 1;
    }
    else if(a.charAt(i) < b.charAt(i)){
      return -1;
    }
  }    
})

console.log(inputArr.join("\n"));

자바스크립트는 문자를 하나하나 비교해야한다 생각하여 문자열을 하나하나로 나누어서 sort하도록 오버라이딩[부모의 메소드를 상속받고 입맛에 따라 재정의 함]을 하였다.

 

그래서 위와같은 코드가 나왔다.

 

하지만 문자열 자체만으로 비교가 가능했다.

let input = require('fs').readFileSync(0).toString().trim().split("\n");

input.shift();

let inputArr = Array.from(new Set(input));

inputArr.sort((a, b) => {
  if(a.length == b.length){
      if(a > b){
        return 1;
      } else if(a < b){
        return -1;
      } else{
        return 0;
      }
  }
      return a.length - b.length;    
});

console.log(inputArr.join("\n"));

참고로 시간은 첫번째가 조금 더 느리다

'문제 > 백준_자바스크립트' 카테고리의 다른 글

83. 18870 (좌표압축)  (0) 2022.06.18
82. 10814(나이순 정렬)  (0) 2022.06.17
80. 11651(좌표 정렬하기2)  (0) 2022.06.16
79. 11650(좌표 정렬하기)  (0) 2022.06.15
78. 1427(소트인사이드)  (0) 2022.06.14
Comments