problem-24060

ysysc·2022년 11월 7일
0

PS

목록 보기
4/47

과정
1. 문제의 merge_sort 및 merge 함수 구현
2. global cnt를 통해서 cnt==k일 경우 해당 값을 ans에 대입
3. ans값을 -1로 초기화하여 2번이 안 일어날 경우 그대로 출력


def merge_sort(temp,p,r):
    if p<r:
        q=(p+r)//2
        merge_sort(temp,p,q)
        merge_sort(temp,q+1,r)
        merge(p,q,r)

def merge(p,q,r):
    global ans,cnt
    tmp=[]
    i,j,t=p,q+1,0
    while i<=q and j<=r:
        if temp[i]<=temp[j]:
            tmp.append(temp[i])
            i+=1
        else:
            tmp.append(temp[j])
            j+=1
    while i<=q:
        tmp.append(temp[i])
        i+=1
    while j<=r:
        tmp.append(temp[j])
        j+=1
    i=p
    for z in range(i,r+1):
        temp[z]=tmp[t]
        if cnt==k:
            ans=temp[z]
        t+=1
        cnt+=1
    
n,k=map(int,input().split())
temp=list(map(int,input().split()))

global ans,cnt
cnt,ans=1,-1

merge_sort(temp,0,n-1)
print(ans)

time: 25분

0개의 댓글