[ 구름톤 챌린지 ] 이진수 정렬

2023. 8. 20. 01:04·코테
728x90

문제

N개의 10진수 정수가 주어진다. 플레이어에게 정수를 그냥 정렬하는 것은 너무 쉽기 때문에, 아래 기준에 따라 정수를 정렬하기로 한다.

  1. 10진수 정수를 2진수로 나타냈을 때, 2진수에 포함된 1의 개수를 기준으로 내림차순 정렬한다.
  2. 1의 개수가 같다면, 원래 10진수를 기준으로 내림차순 정렬한다.

플레이어가 정수를 잘 정렬했을 때, 앞에서 K번째에 위치한 수는 어떤 수가 될지

구해보자.

입력

첫째 줄에 주어지는 정수의 수 N과 플레이어가 찾으려는 정수의 위치 K가 공백을

..두고 주어진다.

둘째 줄에 정수 a1 , a2, ••• , an 이 공백을 두고 주어진다.

  • 1 ≤ N ≤ 500 000
  • 1 ≤ K ≤ N
  • 1 ≤ a ≤ 2^20

출력

기준에 따라 정렬된 정수 중, 앞에서 K번째에 위치한 수를 출력한다.

제출 코드

const readline = require('readline');
let rl = readline.createInterface({
	input: process.stdin,
	output: process.stdout,
});
let input=[];

rl.on('line', (line) => {
	input.push(line);
});

rl.on('close', () => {
	const [n,k]=input[0].split(" ").map(Number);
	const arr = input[1].split(' ').map((e)=>[Number(e),[...Number(e).toString(2)].filter((c)=>c==="1").length,]);
	arr.sort((a,b)=>b[1]-a[1]||b[0]-a[0]);
	console.log(arr[k-1][0]);
})

배운점

  • 숫자들을 2차원 배열로 저장하는 법을 배웠다.
  • 1의 개수를 filter를 사용해서 길이를 세는 방법을 배웠다.
  • 내림차순으로 arr.sort((a,b)⇒b-a)를 써왔는데 이를 2차원 배열에서도 사용하는 법을 배웠다.

느낀점

  • 현대 모비스 기출이지만 문제를 변형했어도 문제가 많이 어려웠다.
  • 내림차 , 오름차 정렬을 2차원 배열로 사용했는데 이후에도 다른 문제에 많이 활용할 것같다 .
728x90

'코테' 카테고리의 다른 글

[ 구름톤 챌린지 ] 통증  (0) 2023.08.27
[ 구름톤 챌린지 ] 문자열 나누기  (0) 2023.08.21
[ 구름톤 챌린지 ] 완벽한 햄버거 만들기  (0) 2023.08.20
[ 구름톤 챌린지 ] 합 계산기  (0) 2023.08.20
[ 구름톤 챌린지 ] 프로젝트 매니징  (0) 2023.08.20
'코테' 카테고리의 다른 글
  • [ 구름톤 챌린지 ] 통증
  • [ 구름톤 챌린지 ] 문자열 나누기
  • [ 구름톤 챌린지 ] 완벽한 햄버거 만들기
  • [ 구름톤 챌린지 ] 합 계산기
Yura 🌼
Yura 🌼
만나서 반갑습니다. 어려운 내용을 쉽게 설명하고 싶은 프론트엔드 개발자 김유라입니다.
  • Yura 🌼
    쉽게 설명할 수 없으면, 아는 것이 아니다 ✍️
    Yura 🌼
    • Yura (72)
      • FE (6)
      • BE (14)
      • 코테 (52)
  • 최근 글

  • 링크

    • Github
    • LinkedIn
  • 전체
    오늘
    어제
  • hELLO· Designed By정상우.v4.10.3
Yura 🌼
[ 구름톤 챌린지 ] 이진수 정렬
상단으로

티스토리툴바