https://school.programmers.co.kr/learn/courses/30/lessons/42748
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
제출 코드
def solution(array, commands):
answer = []
for i in commands:
new = sorted(array[i[0]-1:i[1]])
answer.append(new[i[2]-1])
return answer
정렬 분야로 분류되어 있지만, 사실상 구현문제라고 봐도 무방하다는 생각이 들었습니다.
위 사진은 문제에 제시된 코드 동작 알고리즘입니다. 이거를 그대로 구현하면 정답이 통과되었습니다.
1 . array의 2번째 부터 5번째까지 자르면 [5,2,6,3] 입니다.
one = array[2-1:5] # 2번째에서 5번째 까지 자르기
2. 1에서 나온 배열을 정렬하면 [2,3,5,6] 입니다.
two = sorted(one) # 정렬하기
3. 2에서 나온 배열의 3번째 숫자는 5입니다.
three = two[3-1] # 3번째 요소 ( 0 부터 인덱스 시작 )
이를 일반화 화여 for문을 돌며 답 return 배열에 추가하여 제출하면 정답이 나옵니다.
다른 사람 코드
def solution(array, commands):
return list(map(lambda x:sorted(array[x[0]-1:x[1]])[x[2]-1], commands))
위에서 말한 내용을 한줄로 표현한 것입니다. 가독성은 떨어질 수 있겠으나, 파이썬은 이런식으로도 표현할 수 있다를 깨달았습니다.
25년 재풀이
def solution(array, commands):
answer = []
for l in commands:
i,j,k = l
answer.append(sorted(array[i-1:j])[k-1])
return answer
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
Lv3.(깊이/너비 우선 탐색) 단어 변환 - Python (0) | 2023.05.02 |
---|---|
Lv2.(깊이/너비 우선 탐색) 게임 맵 최단거리 - Python (0) | 2023.05.02 |
Lv3.(깊이/너비 우선 탐색) 네트워크 - Python (0) | 2023.04.26 |
Lv2.(깊이/너비 우선 탐색) 타겟 넘버 - Python (0) | 2023.04.26 |
Lv1 . 포켓몬 - Python (0) | 2023.03.03 |