반응형
문제 설명
배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다.
예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면,
- array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다.
- 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다.
- 2에서 나온 배열의 3번째 숫자는 5입니다.
배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요.
제한사항
- array의 길이는 1 이상 100 이하입니다.
- array의 각 원소는 1 이상 100 이하입니다.
- commands의 길이는 1 이상 50 이하입니다.
- commands의 각 원소는 길이가 3입니다.
입출력 예
풀이 과정
1. 최종 제출 코드와 테스트 결과 (통과)
def solution(array, commands):
answer = []
for i in range(0, len(commands)):
tmp = array[(commands[i][0])-1:(commands[i][1])]
tmp.sort()
answer.append(tmp[(commands[i][2])-1])
return answer
문제 읽는 것과 코드 짜는 것 합쳐서 10분 정도 소요된 것 같다. 이전 문제들에 비해 난이도가 많이 쉬웠다. 이 문제의 핵심은 아래와 같다고 생각한다.
- 문자열 슬라이싱을 할 때, 원소가 어디서부터 어디까지 슬라이싱되는지 알고 있는가?
- '현실 속 k번째' = '리스트에서 k-1번째 원소' 라는 것을 간과하지는 않았는가?
그 외에는 정말 딱히 고려할 부분이 없었다고 생각한다. 하지만 역시나 통과한 다른 코드들을 보면 현자타임이 강렬하게 온다. 좋아요를 많이 받은 코드들을 보면 lambda가 정말 많이 쓰이는 것 같다. 난 7줄이나 짰는데, lambda를 쓰니 2줄 만에 끝난 핵고수가 계셨다. 비단 이 문제 뿐만이 아니고 lambda를 쓰면 아주 간결하고 손쉽게 문제를 해결하는 경향이 있는 것 같다. python을 python답지 못하게 쓰고 있는 느낌이 든다. 나도 어서 람다람다람다람쥐를 공부해봐야겠당.
Source : https://programmers.co.kr/learn/courses/30/lessons/42748
반응형
'PS > 프로그래머스' 카테고리의 다른 글
[프로그래머스][파이썬/Python] x만큼 간격이 있는 n개의 숫자 (0) | 2020.02.19 |
---|---|
[프로그래머스][파이썬/Python] 문자열을 정수로 바꾸기 (0) | 2020.02.18 |
[프로그래머스][파이썬/Python] 두 정수 사이의 합 (0) | 2020.02.18 |
[프로그래머스][파이썬/Python] 체육복 (0) | 2020.02.16 |
[프로그래머스][파이썬/Python] 완주하지 못한 선수 (0) | 2020.02.15 |