| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- 자바스크립트 함수
- 개발자
- 11047 node.js
- IT5분잡학사전
- 노개북
- 1541 node.js
- 1931 node.js
- 11399 node.js
- 노마드스터디
- 모던자바스크립트
- Javascript
- 자바스크립트 일급객체
- 모던자바스크립트 딥다이브
- 21313 nodejs
- 1789 node.js
- 모던자바스크립트DeepDive
- 2217 node.js
- 1026 node.js
- 백준25176
- const
- 자바스크립트 딥다이브
- 백준1789
- 코딩
- 백준1026
- flex box
- CSS flex
- 개인프로젝트
- 노마드북클럽
- 백준21313
- 14655 nodejs
Archives
- Today
- Total
캐또's coding
11650 - 좌표 정렬하기 - node.js 본문
https://www.acmicpc.net/problem/11650
11650번: 좌표 정렬하기
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
www.acmicpc.net
숫자 정렬, 그런데 배열을 더한 버전이라고 보면 된다.
문제를 처음 보면 두 숫자 [x, y]에서 x순으로 정렬을 하고 x가 같은 수들은 y로 정렬하기를 생각하는데, sort를 여러번 작성한다면 시간이 초과될 가능성이 높다.
const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
const cnt = input.shift();
// 입력을 가져오고 첫 번째 값을 빼주는 과정은 지금까지의 과정과 유사하다.
const arr = input.map((x) => x.split(" ").map((y) => parseInt(y)));
// map을 이용해서 한 배열로 되어있는 전체를 각 숫자 묶음씩으로 나눠준다.
// [ [x,y],[x,y]... ]의 모양으로
let result = "";
// 최종 출력을 한번에 하기 위해 result를 할당해둔다.
arr
.sort((a, b) => {
if (a[0] !== b[0]) {
return a[0] - b[0];
}
return a[1] - b[1];
})
.forEach((x) => {
result += `${x[0]} ${x[1]}\n`;
});
// 조건문을 이용해서 정렬한다.
// 만약 비교할 두 수의 x자리의 수가 같다면? y자리의 수를 비교한다.
// forEach로 돌면서 result에 하나씩 추가해준다.
console.log(result);
// 출력하면 문제 해결'기초 공부 > 백준 문제 풀이' 카테고리의 다른 글
| 1181 - 단어 정렬 - node.js (0) | 2023.01.13 |
|---|---|
| 11651 - 좌표 정렬하기 2 - node.js (0) | 2023.01.12 |
| 1427 - 소트인사이드 - node.js (0) | 2023.01.10 |
| 2108 - 통계학 - node.js (0) | 2023.01.09 |
| 10989 - 수 정렬하기 3 - node.js (0) | 2023.01.08 |
Comments