programmers_고득점키트(정렬)

목차

  1. K번째수
  2. 가장 큰 수
  3. H-index

1. K번째 수

def solution(array, commands):
    result = []
    for i in commands:
        a, b, c = i
        result.append(sorted(array[a-1:b])[c-1])
    return result


print(solution([1, 5, 2, 6, 3, 7, 4], [[2, 5, 3], [4, 4, 1], [1, 7, 3]]))

2. 가장 큰 수

def solution(numbers):
    numbers = sorted(map(str, numbers),
                     key=lambda x: (x*4)[:4], reverse=True)
    if numbers[0] == "0":
        answer = '0'
    else:
        answer = "".join(numbers)
    return answer
print(solution([3, 30, 34, 5, 9]))
  • numbers의 원소는 0이상 1000이하 이므로 첫 줄의 lambda x: (x*4)[:4]가 가장 중요하다.

3. H-index

  • 어떤 과학자의 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고, 나머지 논문이 h번 이하로 인용되었다면, h가 이 과학자의 H-index이다.
def solution(citations):
    for i, x in enumerate(sorted(citations)):
        if x >= len(citations)-i:
            return len(citations)-i
    return 0


print(solution([3, 0, 6, 1, 5]))

# sorted [0,1,3,5,6]


참고자료 [프로그래머스]https://programmers.co.kr/learn/challenges

0%