-
[정렬] K번째수 / 가장 큰 수 / H-Index알고리즘/프로그래머스 2021. 9. 5. 14:44
https://programmers.co.kr/learn/courses/30/lessons/42748
파이썬으로 매우 쉽게 풀 수 있다.
def solution(array, commands): answer = [sorted(array[i[0]-1:i[1]])[i[2]-1] for i in commands] return answer
https://programmers.co.kr/learn/courses/30/lessons/42746
처음에 아래와 같이 모든 케이스를 구해서 하려했더니, 시간초과가 나왔다.
from itertools import permutations def solution(numbers): return max(map(''.join, permutations(map(str, numbers))))
전제조건에 numbers의 원소는 1000이하이므로, sorted와 lambda을 이용해서, 가능하다.
x*3은 비교시, 비교 문자를 3번 반복하는 의미이다.
- ex ) '6'*3 = '666'
문자로 비교하기 때문에, 문자열의 첫번째의 인덱스 값으로 비교한다.
* 자꾸 테스트 케이스 한나를 통과 못했는데, answer가 '000'일 경우 였다. 이를 처리하기위해 아래 if문을 추가했다.
def solution(numbers): answer = ''.join(sorted(list(map(str, numbers)), key = lambda x : x*3, reverse = True)) return "0" if int(answer)==0 else answer
https://programmers.co.kr/learn/courses/30/lessons/42747
H-Index : 전체 논문을 피인용 순으로 정렬한 후, 논문의 순번과 피인용 횟수를 비교하여 피인용 횟수가 논문의 순번보다 작아지기 시작하는 직전의 순번이 연구자의 H-Index가 된다.
def solution(citations): citations = sorted(citations, reverse=True) for i in range(len(citations)): if i>=citations[i]: return i return len(citations)
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[위클리 챌린지] 6주차 (0) 2021.09.11 [위클리 챌린지] 5주차 (0) 2021.09.11 [해시] 완주하지 못한 선수 / 전화번호 목록 / 위장 (0) 2021.09.04 [해시] 베스트앨범 (0) 2021.09.04 [위클리 챌린지] 3주차 (0) 2021.08.29