티스토리 뷰
반응형
병합정렬 수행 중 k번째로 저장되는 숫자를 구한다. 값이 저장될때마다 k 카운팅을 세주면 구할 수 있다. 파이썬은 ++가 없어서 좀 코드가 길어졌다..
해결하는 과정서 더 현명한 방법이 없을까? 라는 생각이 들었던 문제다. k 번째 수 라는 병합정렬 응용 문제가 있긴한데... 기시감에 다시 찾아보았는데 같은 류의 문제는 아닌 듯하다.
import sys
input = sys.stdin.readline
n, k = list(map(int, input().split()))
_v = list(map(int,input().split()))
ans = -1
def merge_sort(v, i, j):
if i < j:
m = (i+j)//2
merge_sort(v, i, m)
merge_sort(v, m+1, j)
merge(v, i, m+1, j)
def merge(v, i, m, j):
global k
global ans
p = i
q = m
r = 0
temp = [0] * (j-i+1)
while p < m and q <= j:
k-=1
if v[p] > v[q]:
temp[r] = v[q]
q+=1
else:
temp[r] = v[p]
p+=1
if k == 0:
ans = temp[r]
r+=1
while p < m:
temp[r] = v[p]
k-=1
if k == 0:
ans = temp[r]
p+=1
r+=1
while q <= j:
temp[r] = v[q]
k-=1
if k == 0:
ans = temp[r]
q+=1
r+=1
p=i
i=0
while p<=j:
v[p] = temp[i]
p+=1
i+=1
merge_sort(_v, 0, n-1)
print(ans)
반응형
'알고리즘 문제' 카테고리의 다른 글
기 Express 라우팅을 Firebase Functions에 올리기 (2) | 2022.10.03 |
---|---|
카카오 코테 2023 KAKAO BLIND RECRUITMENT 후기 (2) | 2022.09.25 |
백준 25501 재귀의 귀재 (0) | 2022.09.10 |
백준 5639 이진 검색 트리 (0) | 2018.10.26 |
백준 1922 네트워크 연결 (0) | 2017.08.26 |
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Discrete Mathematics
- 시뮬레이션
- rosen
- 자바스크립트
- javascript
- 최단경로 알고리즘
- 엄청난 인내심과 시뮬레이션을 위한 아레나 툴
- 아레나
- 항해99
- flutter
- Propositional and Predicate Logic
- 로젠
- 아레나 시뮬레이션
- 데이터 중심 애플리케이션 설계
- 그라파나
- 자바스크립트 예제
- paul wilton
- 명제논리
- 대규모 시스템 설계 기초
- 백준
- Simulation
- 아레나시뮬레이션
- Grafana
- 가상 면접 사례로 배우는 대규모 시스템 설계 기초
- 이산 수학
- grafana cloud
- arena simulation
- beginning javascript
- 이산수학
- Arena
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함