[파이썬 코드카타]
K번째수
https://school.programmers.co.kr/learn/courses/30/lessons/42748
1) 어떤 문제가 있었나
배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하는 문제
array = [1, 5, 2, 6, 3, 7, 4]
commands = [[2, 5, 3], [4, 4, 1], [1, 7, 3]] #각 리스트 속 원소가 i, j, k
result = [5, 6, 3]
2) 내가 시도해본 건 무엇인가
- command 원소의 길이는 3으로 고정인 점을 활용해 1차 for문으로 우선 slice list 생성
- 2차 for문에서 zip으로 slice list와 command의 마지막 반환 자릿수를 한 꺼번에 추출
- slice 값 정렬 후, 자리수에 맞는 숫자만 answer 리스트에 넣고 정답 반환
3) 어떻게 해결했나
def solution(array, commands):
slice_list = []
answer = []
for j in commands:
slice_list.append(array[(j[0]-1):(j[1])])
# [[5, 2, 6, 3], [6], [1, 5, 2, 6, 3, 7, 4]]
for n, m in zip(slice_list, commands):
answer.append(sorted(n)[(m[2]-1)])
return answer
4) 무엇을 새롭게 알았나
- for 문으로 리스트를 꺼낸 뒤, 각 원소 자리수에 맞춰 변수를 지정해줄 수 있음!! (i,j,k = command)
- list comprehension 꾸준히 연습이 필요할 듯
- x.sort()만 작성하면 none 반환되므로, 정렬 값을 보고싶다면 x를 출력해야 함
└ sorted(x)를 하면 x 변수에 지정을 따로 해줘야 하지만, 즉시 반환된 값 확인 가능
# 다른 사람 풀이 01
def solution(array, commands):
answer = []
for command in commands:
i,j,k = command
answer.append(list(sorted(array[i-1:j]))[k-1])
return answer
# 다른 사람 풀이 02
def solution(array, commands):
return [sorted(array[a[0]-1:a[1]])[a[2]-1] for a in commands]
'TIL' 카테고리의 다른 글
[240329] 파이썬 sqlalchmey로 SQL DB 연동해 데이터 불러오기 (0) | 2024.04.01 |
---|---|
[240328] 파이썬: 코드카타 49 & SQL: 코드카타 167 (0) | 2024.03.28 |
[240326] 파이썬: 코드카타 47 & SQL: 코드카타 165 (0) | 2024.03.26 |
[240325] 파이썬: 코드카타 46 & SQL: 코드카타 161~164 (0) | 2024.03.25 |
[240322] 파이썬 실습 코드: 메모리 경량화 (with parquet) (0) | 2024.03.22 |