Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- WITH ROLLUP
- 스태킹 앙상블
- 캐글 신용카드 사기 검출
- Growth hacking
- XGBoost
- 분석 패널
- 리프 중심 트리 분할
- 인프런
- 부트 스트래핑
- 로그 변환
- 데이터 핸들링
- ARIMA
- 데이터 정합성
- sql
- pmdarima
- DENSE_RANK()
- WITH CUBE
- 컨브넷
- tableau
- 캐글 산탄데르 고객 만족 예측
- 데이터 증식
- 마케팅 보다는 취준 강연 같다(?)
- 그로스 해킹
- lightgbm
- python
- 그룹 연산
- 3기가 마지막이라니..!
- splitlines
- 그로스 마케팅
- ImageDateGenerator
Archives
- Today
- Total
LITTLE BY LITTLE
[알고리즘] 정렬 - K번째 수 본문
https://school.programmers.co.kr/learn/courses/30/lessons/42748
Q.
- array가 [1,5,2,6,3,7,4] 이고, 매개변수인 commands가 [i,j,k] = [2, 5, 3]일 때
- array를 2~5번째까지 자르고, 자른 배열 [5,2,6,3] 을 정렬하고(2,3,5,6), 3번째 수를 return → 5
- [제한] array의 길이는 1~100, 원소는 1~100, commands의 길이는 1~50 원소의 길이는 3
1. 자르고 → 슬라이싱 활용 list[start:end]
array[i:j]
2. 정렬 → 리스트 정렬 sorted(array) 활용
sorted_array = sorted(array)
3. n번째 값 반환 → 인덱싱 활용 array[n]
sorted_array[k]
✅ 반복(for)문 사용
: 여러 개(i,j,k)의 형태로 주어지는 commands 처리
for command in commands:
i,j,k = command
✅ 유효성 검사
: slicing하기 위해 i<=j 조건 필요 (j가 더 작을 경우 순서 바꿔주기)
if i>j : i,j=j,i
✅ 리스트 초기화(result=[ ])와 저장공간 할당(result.append())
: commands가 여러 개 들어올 수 있기 때문에 ([i,j,k],[i,j,k]...) 반복적으로 처리하고 연산 결과를 누적해서 저장하기 위함
정답
# slicing -> sorted -> indexing
def solution(array, commands):
result = []
for command in commands:
i,j,k=command
if i>j:
i,j = j,i
sorted_array = sorted(array[i-1:j]) # j-1(x) , 슬라이싱은 끝 범위를 포함하지 않음
result.append(sorted_array[k-1]) # k(x)
return result # return은 for문 밖에
→ 슬라이싱/인덱싱 순서 주의
답변 비교
https://school.programmers.co.kr/learn/courses/30/lessons/42748/questions
'프로그래머스' 카테고리의 다른 글
[알고리즘] 해시 - 완주하지 못한 선수 (0) | 2024.09.02 |
---|---|
[알고리즘] 해시 - 폰켓몬 (0) | 2024.09.01 |
[2] 프로그래머스 - SQL (0) | 2024.08.12 |
[1] 프로그래머스 - SQL (0) | 2024.08.08 |
[1] 프로그래머스 - 영어 끝말잇기 (0) | 2023.11.19 |
Comments