📝 문제
> 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다.
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


🎨 풀이
💡 첫번째 시도 = 성공
def solution(array, commands):
answer = []
slice_array = []
for i in range(0, len(commands)):
a = commands[i][0] - 1
b = commands[i][1]
c = commands[i][2] - 1
slice_array = array[a:b]
slice_array.sort()
answer.append(slice_array[c])
return answer
> 문제 그대로 코드를 작성해봤다.
1. 먼저, i, j, k가 리스트 단위로 주어지니까 그걸 각각 a, b, c에 담았다.
- b만 -1을 안한 이유는 배열이 0부터 시작하는 것과 관련이 있다.
- 배열은 0번째부터 수가 담긴다. 이 글에서 i에 2가 주어진다면 2번째 숫자, 즉 1번째에 있는 수를 말하는 것이다. 그래서 a와 c는 배열의 특성상 -1을 해준 것이다.
- b는 슬라이스 할 때 n번째 까지면 n번째 수는 포함이 되지 않기 때문에 -1을 따로 해주면 안된다.
슬라이스 예시
a = [0,1,2,3,4,5,6,7]
a = [0:4] // 인덱스 0부터 3까지 잘라서 새로운 리스트를 만듦.
> a = [0,1,2,3] // 결과
2. a, b, c에 잘 나눠담은 후 a부터 b까지 수를 잘라 slice_array에 넣는다.
3. slice_array를 sort를 이용해 정렬한다.
4. slice_array[c]를, 즉 정렬한 리스트에서 k번째 수를 answer에 추가한다.
끝이다~
⭐ 느낀점
> 슬라이스가 왜 이렇게 어려운 지 모르겠다~!! 아니 자꾸 헷갈린다 ㅠㅠ 알똥말똥하다. 계속 틀리고 맞고를 반복하다보면 언젠가 습득이 될 것 같기도 하다. 이 문제는 sort 정렬이 없었으면 좀 어려웠을 것 같다. sort 정렬 없이 직접 정렬해야하는 것도 문제에 나오고 그러나? 모르겠네 허허. ㅎㅎ. 좀 알아보고 그래야겠다.
'🎲 알고리즘 공부 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 / Level 1] 폰켓몬 (파이썬) (0) | 2022.04.07 |
---|---|
[프로그래머스 / Level 1] 체육복 (파이썬) (0) | 2022.04.06 |
[프로그래머스 / Level 1] 완주하지 못한 선수 (파이썬) (0) | 2022.04.04 |
[프로그래머스 / Level 1] 내적 (파이썬) (0) | 2022.04.03 |
[프로그래머스 / Level 1] 음양 더하기 (파이썬) (0) | 2022.04.02 |