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. 알고리즘 계획
- command리스트 0번째, 1번째, 2번째 값을 각각 array배열을 슬라이싱 하기 위한 int형 변수로 계산
- 마지막에 슬라이싱한 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 |