[알고리즘] JS 정렬 문제

김선은·2023년 10월 19일

알고리즘 문제

목록 보기
3/4

좌표 압축 후 정렬

x축에 좌표를 크기 순위로 정렬해야한다.

예제 입력예제 출력
52 3 0 3 1
2 4 -10 4 -9
let input = ["5","2 4 -10 4 -9 -10"]

let n = Number(input[0]) // 5

let arr = input[1].split(" ").map(Number)
// [2, 4, -10, 4, -9, -10] 

let uniqueArr = [...new Set(arr)]
uniqueArr.sort((a,b) => a-b)
// [-10, -9, 2, 4] 

// arr 원소들 키와 값 매핑하기
let myMap = new Map()

for(let i=0; i<uniqueArr.length; i++) {
 myMap.set(uniqueArr[i], i)
}

let answer = ""

for(let x of arr) answer += myMap.get(x) + " "

console.log(answer) // "2 3 0 3 1 0"

나이와 이름 순 정렬

나이 순으로 정렬하고 나이가 같으면 가입한 순으로 한 줄에 한명씩!

예제 입력예제 출력
320 Sunyoung
21 Junkyu21 Junkyu
21 Dohyun21 Dohyun
20 Sunyoung
let input = ["5","20 Jun", "23 Nick", "20 Kaka", "32 Mike", "18 Elice"]

let n = Number(input[0]) // 5

let arr = []

for (let i=1; i<=n; i++) {
    let age = Number(input[i].split(" ")[0])
    let name = input[i].split(" ")[1]
    arr.push([age,name])
}

// console.log(...arr)
// [20, "Jun"],  [23, "Nick"],  [20, "Kaka"],  [32, "Mike"],  [18, "Elice"] 

// @ts-ignore
arr.sort((a,b) => a[0]-b[0])

let answer = "";

for (let x of arr) answer += x[0] + " " + x[1] + "\n"

console.log(answer)

출력:
"18 Elice
20 Jun
20 Kaka
23 Nick
32 Mike
"
profile
기록은 기억이 된다

0개의 댓글