국문과 유목민

5. K번째 수 본문

알고리즘_코딩테스트/프로그래머스_Level1

5. K번째 수

논곰 2020. 9. 9. 16:28

0. 문제

링크) https://programmers.co.kr/learn/courses/30/lessons/42748

 

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

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

programmers.co.kr


1. 알고리즘 계획

  1.  command리스트 0번째, 1번째, 2번째 값을 각각 array배열을 슬라이싱 하기 위한 int형 변수로 계산
  2. 마지막에 슬라이싱한 array값을 sorted함수로 정렬


2. 나의 코드

def solution(array, commands):
    answer = []
    for idx, v in enumerate(commands):
        answer.append(sorted(array[v[0]-1:v[1]])[v[2]-1])
    return answer
 


3. 다른 사람의 코드

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

- map함수를 이용해서 쉽게 문제를 품

※  map(함수, 리스트): 리스트로부터 원소를 하나씩 꺼내서 함수를 적용시킨 다음 새로운 리스트에 담는다.


4. 정리 및 리뷰

- 스스로 연습했던 코드 중 가장 빠르게 작업한 코드라고 생각함.

- enumerate함수를 잘 이용하지 못해서 아쉬움이 남음 

# map함수와 reduce함수, filter함수에 대한 이해

- reduce(함수, 순서형 자료): 순서형 자료의 값을 모두 더함 
- filter(함수, 리스트): 리스트의 값들 중 참인 값들로 새로운 리스트를 만든다. 
 ※ map, reduce, filter 함수는 마지막에 list(  )로 감싸줘야 한다. 그렇지 않으면 type이 변하지 않는다. 
    # list(map()) / list(reduce()) / list(filter())

코드 만족도: ★★


'알고리즘_코딩테스트 > 프로그래머스_Level1' 카테고리의 다른 글

7. 가운데 글자 가져오기  (0) 2020.09.09
6. 2016년  (0) 2020.09.09
4. 체육복  (0) 2020.09.09
3. 모의고사  (0) 2020.09.09
2. 완주하지 못한 선수  (0) 2020.09.09
Comments