정렬 문제 풀이

JIN·2023년 2월 21일
0
post-custom-banner

정렬

1. K 번째 수 (5분 소요)

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

문제 접근 설계

  1. array의 i번째부터 j번째까지 자르기
  2. 1에서 나온 배열을 정렬
  3. 2에서 나온 배열의 k번째 숫자 answer 배열에 append
  4. return answer

내 코드

def solution(array, commands):
    answer = []
    for command in commands:
        temp = array[command[0]-1: command[1]]
        temp.sort()
        answer.append(temp[command[2]-1])
    return answer

2. 가장 큰 수 (5분 소요)

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

문제 접근 설계

  1. numbers의 원소가 최대 1000이므로 문자열 3자리로 모두 바꾸어 비교
  2. 예) 3, 30 , 33 → 3333, 3030, 3333 으로 비교
  3. “0000” → “0” 이여야 하므로 int로 바꾸고 다시 str으로 변경

내 코드

def solution(numbers):
    result = sorted(numbers, reverse = True, key=lambda x: str(x)*3)
    return str(int(''.join(map(str, result))))

3. H- Index (10분 소요)

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

문제 접근 설계

  1. 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h
    의 최댓값이 이 과학자의 H-Index
  2. 배열의 최댓값 부터 시작해서 1씩 감소 (h 후보)
  3. h 보다 크거나 같은 수가 h개 이상이면 return value 내 코드
    def solution(citations):
       for value in range(max(citations), -1, -1):
           temp = 0
           for citation in citations:
               if citation >= value:
                   temp += 1
               if temp >= value:
                   return value
       return value
profile
배우고 적용하고 개선하기
post-custom-banner

0개의 댓글