프로그래머스 고득점 Kit(Python) - 4. 정렬

정렬

K번째 수

array[시작포함:종료미포함] 으로 배열자르고
sorted() 사용하여 오름차순 정렬
정렬된 상태에서 (idx-1)번째 값을 answer에 넣기

def solution(array, commands):
    answer = []
    
    for start,end,idx in commands:
        answer.append(sorted(array[start-1:end])[idx-1]);
    
    return answer

가장 큰 수

가장큰자리숫자 내림차순으로 정렬
3, 30 , 33 같이 앞자리가 동일한 숫자를 비교할때 *3을 이용해 계산
(최대 숫자가 1000이므로 겹치는 숫자는 최대3자리숫자)
333, 303030, 333333 => 333333, 333, 303030

def solution(numbers):
    answer = ''
    strNumbers = list(str(x) for x in numbers)
    strNumbers = sorted(strNumbers, key=lambda x:x*3, reverse=True)
    #print(strNumbers)
    
    for strNumber in strNumbers:
        answer += strNumber
    return str(int(answer))
def solution(numbers):
    numbers = list(map(str, numbers))
    numbers.sort(key=lambda x: x*3, reverse=True)
    return str(int(''.join(numbers)))

H-Index

current,citationsLen - idx 중에 최솟값을 answer로 세팅
답이 반드시 citations안에 있어야 하는 것은 아님

def solution(citations):
    answer = 0
    citationsLen = len(citations)
    citations.sort()
    
    for idx in range(citationsLen):
        current = citations[idx]
        print(idx, current, citationsLen - idx)
        if answer==0 and current >= citationsLen - idx:
            answer = min(current,citationsLen - idx)
        
    return answer

좋은 웹페이지 즐겨찾기