본문 바로가기

Python_Matter/COS Pro

YBM Python Test Level 2 - k번째로 작은 수

Q>

문제 설명
자연수가 담겨있는 n x 4 크기의 2차원 배열에서 k번째로 작은 수를 찾으려 합니다.

이때, n은 배열의 세로길이, 4는 배열의 가로길이입니다.

예를 들어 다음은 자연수가 담겨있는 4 x 4 크기의 2차원 배열입니다.

위 2차원 배열에서 가장 작은 수는 2입니다. 

두 번째로 작은 수는 4, 세 번째로 작은 수는 5이며, 네 번째로 작은 수는 11입니다.

2차원 배열 arr와 k가 매개변수로 주어질 때, arr에서 k번째로 작은 수를 찾아 return 하도록 solution 함수를 완성해주세요.

- 매개변수 설명
2차원 배열 arr와 자연수 k가 solution 함수의 매개변수로 주어집니다.
* arr는 n x 4 크기의 2차원 배열이며, n은 1 이상 20 이하입니다.
* n은 arr의 세로길이이며, 가로길이는 항상 4입니다.
* arr의 원소는 1 이상 1,000 이하의 자연수이며, 같은 수가 중복해서 들어있지 않습니다.
* k는 1 이상 n x 4 이하의 자연수입니다.

 

- return 값 설명
2차원 배열 arr에서 k번째로 작은 수를 찾아서 return 하도록 solution 함수를 작성해주세요.

- 예시

arr k return
[[5,12,4,31],[24,13,11,2],[43,44,19,26],[33,65,20,21]] 4 11


- 예시 설명
예시 #1
주어진 2차원 배열은 문제의 그림과 같습니다. 이때, 네 번째로 작은 수는 11입니다.

 

A>

def solution(arr, k):
    # 2차원 리스트를 1차원 리스트로 변환
    container = []              # 빈 리스트 생성
    for i in arr:
        container += i
    container.sort()            # container 숫자 오름차순 정렬
    return container[k - 1]     # k번째로부터 작은 수를 반환하면 된다. 리스트의 인덱스 시작번호는 0번이므로 k-1

print(solution([[5, 12, 4, 31], [24, 13, 11, 2], [43, 44, 19, 26], [33, 65, 20, 21]], 4))

 

F>

Quiz10.py
0.00MB

 

#>

https://programmers.co.kr/learn/courses/33