티스토리 뷰

 

 

코딩테스트 연습 - K번째수

[1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3]

programmers.co.kr

<풀이>

처음은 그냥 내장 함수 sorted()를 활용해서 풀어봤다.

하지만 정렬 알고리즘을 직접 구현해보는 것도 좋을 것 같아서 선택 정렬과 삽입 정렬을 구현해보기로 했다.

 

1. 내장함수 sorted 활용

1
2
3
4
5
6
7
8
def solution(array, commands):
    answer = []
    for command in commands:
        temp_array = array[command[0]-1:command[1]]
        temp_array = sorted(temp_array)
        answer.append(temp_array[command[2]-1])
        
    return answer
cs

 

2. 선택 정렬

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def solution(array, commands):
    answer = []
    def selection_sort(my_array):
        for i in range(len(my_array)-1):
            min_val = my_array[i]
            min_idx = i
            for j in range(i+1len(my_array)):
                if my_array[j] < min_val:
                    min_val = my_array[j]
                    min_idx = j
            my_array[i], my_array[min_idx] = my_array[min_idx], my_array[i]
        return my_array
        
    for command in commands:
        temp_array = array[command[0]-1:command[1]]
        temp_array = selection_sort(temp_array)
        answer.append(temp_array[command[2]-1])
        
    return answer
cs

 

3. 삽입 정렬

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def solution(array, commands):
    answer = []
    def insertion_sort(my_array):
        for i in range(1len(my_array)):
            for j in range(i, 0-1):
                if my_array[j] < my_array[j-1]:
                    my_array[j], my_array[j-1= my_array[j-1], my_array[j]
                else:
                    break
        return my_array
        
    for command in commands:
        temp_array = array[command[0]-1:command[1]]
        temp_array = insertion_sort(temp_array)
        answer.append(temp_array[command[2]-1])
        
    return answer
cs

 

 

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함