프로그래머스 K번째 수 (Python)

2021. 12. 8. 01:28발돋움/알고리즘

728x90
반응형

알고리즘에 다시 재미를 붙이기 위해 쉬운 것부터 시작하기로 한다.

#1 인덱스로만 접근하는 방법

def solution(array, commands):
    answer = []
    length = len(commands) #for문에서 하면 돌 때마다 매번 센다고 해서..
    
    for i in range(length):
        new_array = array[commands[i][0]-1:commands[i][1]] # i부터 j자르기
        new_array.sort() # 정렬
       
        answer.append(new_array[commands[i][2]-1]) # k번째 수 결과 리스트에 넣기
    
    return answer

 

#2 위와 사실상 같지만 일차원 배열 자체를 가져와서 인덱스로 접근하는게 덜 복잡

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

 #3 람다를 이용한 한 줄 (남이 한 것..)

def solution(array, commands):
    return list(map(lambda x:sorted(array[x[0]-1:x[1]])[x[2]-1], commands))

람다는 정말 대단한 함수다...

아마 성능은 케이스 3번이 제일 빠르지 않을까 싶다..

 

잘못된 부분이나 더 알아야 하는 부분이 있다면 알려주세요 병아리에겐 큰 도움이 됩니다!

728x90
반응형