728x90
https://programmers.co.kr/learn/courses/33/lessons/1864?language=python3
문제
자연수가 담겨있는 n x 4 크기의 2차원 배열에서 k번째로 작은 수를 찾으려 합니다. 이때, n은 배열의 세로길이, 4는 배열의 가로길이입니다. 예를 들어 다음은 자연수가 담겨있는 4 x 4 크기의 2차원 배열입니다.
위 2차원 배열에서 가장 작은 수는 2입니다. 두 번째로 작은 수는 4, 세 번째로 작은 수는 5이며, 네 번째로 작은 수는 11입니다.
2차원 배열 arr와 k가 매개변수로 주어질 때, arr에서 k번째로 작은 수를 찾아 return 하도록 solution 함수를 완성해주세요.
과정
n번째로 작은 수를 찾아라. 에서 받아온 배열속 요소들을 전부 뒤져봐야 되겠다는 생각이 들었다.
arr로 받는 배열들은 하나로 합치고 그 안에 오름차순으로 작은 수부터 k번째까지 탐색해야겠다~ 생각하고 시작!
하나로 합친 allNumbers를 k번 만큼 퀵정렬로 빼려 했으나 sorted라는 편한 함수가 있어서 더욱 쉽게 풀 수 있었다.
풀이
def solution(arr, k):
answer = 0
allNumbers = []
for a in arr:
allNumbers += a
numbers = sorted(allNumbers)
for i in range(k):
answer = numbers[i]
return answer
괜히 어렵게 코드를 쓰면서 낭비할 필요가 없다. 물론 길어도 상관은 없지만 이미 제공되는 함수들을 적극 활용하여 문제를 풀도록 하자.
대신 사용하는 함수들의 시간복잡도나 원리에 대해서는 꼭 이해를 하자.
728x90
'알고리즘 공부' 카테고리의 다른 글
재귀를 사용한 팩토리얼, 피보나치 구현 (0) | 2021.09.08 |
---|---|
백준 2530: 인공지능 시계 (0) | 2021.09.06 |
두 정수형 배열을 10진수 값으로 더하기 (0) | 2021.09.05 |