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

반디·2023년 8월 20일
0

코테스터디

목록 보기
9/11

문제링크: https://level.goorm.io/l/challenge/goormthon-challenge?utm_source=inhouse_level&utm_medium=banner_main&utm_content=open

  • 5일차 미션: 이진수 정렬

아이디어

  1. 각 숫자를 이진수로 변환한 후, 1의 개수를 카운트
  2. [1의 개수, 원 숫자]를 기준으로 정렬

코드

import sys 

total_numbers, pos = map(int, input().split())
numbers = list(map(int, input().split()))

numbers_info = []
for i in range(total_numbers):
	numbers_to_binary = bin(numbers[i])[2:]
	numbers_info.append([numbers[i], numbers_to_binary.count('1')])
	
numbers_info.sort(key = lambda x: [x[1], x[0]],reverse = True)
print(numbers_info[pos-1][0])

결과


코드

numbers_to_binary 배열 선언 시, 각 원소를 [1의 갯수, 원 숫자]로 선언하면 lambda 함수로 순서를 지정해주지 않아도 됨!
(reverse = True로 선언하면 1의 갯수, 원 숫자 기준으로 내림차순으로 정렬하게 되므로)

import sys 

total_numbers, pos = map(int, input().split())
numbers = list(map(int, input().split()))

numbers_info = []
for i in range(total_numbers):
	numbers_to_binary = bin(numbers[i])[2:]
	numbers_info.append([numbers_to_binary.count('1'), numbers[i]])
	
numbers_info.sort(reverse = True)
print(numbers_info[pos-1][1])

결과

profile
꾸준히!

0개의 댓글