본문 바로가기

백준/JavaScript

[JS] 백준 1181번 단어 정렬

728x90

 

졸리다...

할 일이 너무 많아서 슬퍼...

시간아... 나 좀 기다려줘(시간: 어림도 없지)

 

 

문제

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

 

1181번: 단어 정렬

첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.

www.acmicpc.net

 

이번에도 C++에서 풀었던 문제이다.

길이가 짧은 것부터, 길이가 같으면 사전 순으로~~

그리고 중복되는 값은 지워주어야 한다.

 

const fs = require('fs');

// 백준에 제출할 때 써야하는 것
//const readFileSyncAdress = '/dev/stdin';

const readFileSyncAdress = 'input.txt';

let input = fs.readFileSync(readFileSyncAdress).toString().trim().split('\n');

// 맨 앞의 숫자 없애기
input.shift();

//중복제거
arr = [...new Set(input)];

arr = arr.sort().sort((a,b)=>a.length-b.length).join('\n');

console.log(arr);

 

 

아... 오늘 입력값을 input.txt에 안 적고 어제 쓴 입력값을 그대로 썼다...ㅋㅋㅋㅋ(그러니까 틀리지)

자바스크립트는 뭔가 알 것 같으면서도 모르겠다.

 

Set은 클래스라서 new 키워드와 생성자를 사용하여 객체를 생성할 수 있다. Set는 배열과 비슷해보이지만 사실 결이 아주 다른 자료구조이다. Set은 데이터를 순서없이 저장하기 때문에 배열처럼 인덱스를 통해서 접근할 수 없다. 그리고 Set은 중복된 데이터를 허용하지 않는다. 즉, 기존에 Set에 있는 값을 또 추가하면 아무 효력이 발생하지 않는다.

 

참고한 블로그에서는 Set으로 중복을 없앤 후 sort 함수를 쓰기 위해 []을 이용해 배열로 바꿔주었다.

sort()를 문자열 배열에 호출할 경우 알파벳 순서(오름차순)로 정렬된다. 그러니 사전순으로 정렬한 후 length를 사용하여 길이가 짧은 순으로 정렬되도록 만들었다.

 

마지막으로 join을 통해 줄바꿈하여 출력되도록 만들었다.

 

 

 

 

 

내가 참고한 블로그에서는 localeCompare을 통해 사전순으로 정렬해주었다.

//입력받는 부분
const fs=require('fs')
const input=fs.readFileSync('example.txt','utf-8').toString().trim().split('\n')

//맨 앞 값을 지워준다. 배열의 길이는 함수를 이용하면 구할 수 있기 때문이다.
input.shift()

//array->Set->array 과정을 거쳐 중복 제거
s_arr=[...new Set(input)]

//뒤에 있는 조건이 사전순으로 정렬을 해준다.
s_arr = s_arr.sort((a,b)=>a.length - b.length || a.localeCompare(b)).join('\n')

console.log(s_arr)

 

 

 

허거덕~~~ 이분도 백준에 제출할 때 파일입출력을 바꿔주지 않아서 런타임 에러가 났다 ㅎㅎ.

 

....

 

슬프다... 만약에 틀린 부분을 못 찾았다면... 생각만 해도 슬프다.

 

 

 

 

 

자바스크립트 이녀석...!!

내가 다 뿌셔주겠어~~~~~!!!!

 

 

 

 

 

[참고] https://www.daleseo.com/js-set/

https://www.daleseo.com/js-sort-to-sorted/

https://gent.tistory.com/294

https://velog.io/@hyeonzii/%EB%B0%B1%EC%A4%80JS-1181

https://codechacha.com/ko/javascript-sorting-arr/

https://mycodings.fly.dev/blog/2023-01-16-how-to-javascript-string-and-localecompare-method

728x90