[programmers] K번째 수(Python)

한은기·2021년 7월 23일
0

Link for Problem

코딩테스트>K번째 수


Problem

배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요.


Solution

# 나의 풀이
def solution(array, commands):
  answer = []
  for command in commands:
    new_array = array[command[0]-1:command[1]]
    for j in range(len(new_array)-1):
      for i in range(len(new_array)-1):
        if new_array[i]>new_array[i+1]:
          temp = new_array[i]
          new_array[i] = new_array[i+1]
          new_array[i+1] = temp
    print(new_array)
    answer.append(new_array[command[2]-1])
  return answer
  
# 다른 사람의 풀이 : map, lambda, sorted 함수 사용
def solution(array, commands):
    return list(map(lambda x:sorted(array[x[0]-1:x[1]])[x[2]-1], commands))

Review

전공 강의 시 내장된 sorted 함수의 사용을 지양해왔기에, sorted를 직접 구현했다. 하지만 sorted 함수를 사용하는 편이 오류를 줄이고 간결한 방법일 것이다.
map, lambda 함수의 사용에 아직 미숙하므로, Pythonic한 코드 작성을 위해 연습할 필요가 있어 보인다.


GitHub Link

AlgorithmStudy/programmers_K번째 수

profile
🏫Inha Univ. Naval Architecture and Ocean Engineering & Computer Engineering (Undergraduate) / 🚢Autonomous Vehicles, 💡Machine Learning

0개의 댓글