[프로그래머스 정렬 lv2] 가장 큰 수, H-index

밀루·2023년 4월 13일

백준 문제풀이

목록 보기
41/51

가장 큰 수

https://school.programmers.co.kr/learn/courses/30/lessons/42746

정답 코드

def solution(numbers):
    # 1. 모든 수를 문자열로 변환
    numbers = list(map(str, numbers))

    # 2. x+y와 y+x를 비교하여 정렬
    numbers.sort(key=lambda x: (x * 4)[:4], reverse=True)
    # 3. 정렬된 numbers를 이어붙인 뒤 반환
    answer = ''.join(numbers)
    
    # 0이 여러개일 경우, "000" 대신 "0"을 반환하도록 예외처리
    if answer[0] == '0':
        return '0'
    else:
        return answer

H-index

https://school.programmers.co.kr/learn/courses/30/lessons/42747

Try1

def solution(citations):
    citations.sort()
    answer = 0
    for i in range(len(citations)):
        mod = len(citations)-i
        if citations[i] >= mod:
            return mod

Try2 정답 코드

def solution(citations):
    citations.sort()
    answer = 0
    for i in range(len(citations)):
        mod = len(citations)-i
        if citations[i] >= mod:
            answer += 1
    return answer

Try1은 마지막 테스트 케이스 하나를 통과하지 못했는데, 반례는 다음과 같다.
만약 논문이 [9, 9, 9, 9, 9]로 주어졌다면 try1의 답은 3이 된다.
하지만 이런 경우 5를 리턴해야한다.

이를 수정한 부분이 try2 코드다.

profile
벨로그에 틀린 코드나 개선할 내용이 있을 수 있습니다. 지적은 언제나 환영합니다.

0개의 댓글