알고리즘/프로그래머스
[구름톤 챌린지] 1주 차 5일차 학습 일기
김보통김보름
2023. 8. 18. 23:24
728x90
반응형
✔️문제
✔️해결 코드
N,K = map(int, input().split())
nums = list(map(int, input().split()))
# 2진수로 변경
for i in range(len(nums)):
nums[i] = bin(nums[i])
sorted_binary_list = sorted(nums, key=lambda binary: (binary.count('1'), int(binary, 2)), reverse=True)
result = [int(i, 2) for i in sorted_binary_list]
print(result[K-1])
✔️풀이
bin함수는 10진수를 2진수로 변환시킨다.
for i in range(len(nums)):
nums[i] = bin(nums[i])
key는 정렬 순서를 결정하는 함수를 지정하는 매개변수입니다.
sorted_binary_list = sorted(nums, key=lambda binary: (binary.count('1'), int(binary, 2)), reverse=True)
lambda binary
(binary.count('1'), int(binary, 2))은 이진 문자열(binary)을 가져와 두 값으로 구성된 튜플을 반환하는 람다 함수
binary.count('1')
이진 문자열 내 '1'의 개수를 계산합니다. 이것은 주요 정렬 기준으로 사용됨
int(binary, 2)
이진 문자열을 2진법(이진)으로 변환하여 정수로 변환합니다. 이것은 보조 정렬 기준으로 사용됨
reverse=True는 목록을 내림차순으로 정렬하는 데 사용됩니다(높은 값부터 낮은 값으로).
⭐배운점
728x90