728x90
문제 풀이
1. N = 정수의 개수(두 번째 줄) / K = K번째에 위치한 정수(6번째)
N = 8 / K = 6
2. 1 2 3 4 5 6 7 8 => 두 번째 줄에 있는 리스트를 이진수로 만들자
3. 이진수 2^3 = 8 / 2^2 = 4 / 2^1 = 2 / 2^0 =1
1 = 0001
2 = 0010
3 = 0011
4 = 0100
5 = 0101
6 = 0110
7 = 0111
8 = 1000
4. 1의 숫자가 적은 순서로 정렬 내림차순/ 1의 개수가 같다면 10진수를 기준으로 내림차순
1 = 0001 (맨 뒤 정렬: 7번째)
2 = 0010
4 = 0100 -> 5번째 위치한 수 '4' 출력(K-1)
8 = 1000
3 = 0011
5 = 0101
6 = 0110
7 = 0111 (맨 앞 정렬: 0번째)
코드 함수 설명
split( ) : 문자열을 잘라서 리스트로 만들어줌
text = "Hello world this is Python"
words = text.split()
print(words) # 출력: ['Hello', 'world', 'this', 'is', 'Python']
map( ): 리스트나 다른 반복 가능한 객체의 각 요소들에 새로운 리스트를 만들어줌
numbers = [1, 2, 3, 4]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers) # 출력: [1, 4, 9, 16]
format( ): 문자열에 변수를 삽입하거나 형식을 지정하는 데 사용
name = "John"
age = 14
introduction = "My name is {} and I am {} years old.".format(name, age)
print(introduction) # 출력: My name is John and I am 14 years old.
sort( ): 오름차순(작은 것부터 큰 것)
reverse( ): 내림차순(큰 것부터 작은 )
key = : 정렬 기준을 지정하는 데 사용된다.
#sort
words = ["apple", "banana", "cherry", "date"]
words.sort(key=len)
print(words) # 출력: ['date', 'apple', 'banana', 'cherry']
#reverse
words = ["apple", "banana", "cherry", "date"]
words.sort(reverse = True, key=len)
print(words) #출력: ['banana', 'cherry', 'apple', 'date']
lambda: 간단한 익명 함수를 만들 때 사용된다.
square = lambda x: x ** 2
print(square(5)) # 출력: 25
결과
n,k = map(int, input().split())
alist = list(map(int, input().split()))
def binary(a):
return str(format(a, 'b')).count("1")
alist.sort(reverse = True, key = lambda x: (binary(x), x))
print(alist[k-1])
728x90
'Python' 카테고리의 다른 글
코딩테스트 / 문자열 섞기/ Python + 설명 (2) | 2024.07.11 |
---|---|
코딩 테스트 대소문자 바꿔서 출력하기/ Python + 추가 문제, 설명 (0) | 2024.07.08 |
코딩테스트 문자열 돌리기/Python + string 정리 (0) | 2024.07.08 |
데이터 구조 (0) | 2024.07.02 |
[PCCE 기출문제] 6번 / 가채점/ python (0) | 2024.06.22 |