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 |
Tags
- 분할메모리할당
- react
- js to ts
- 기초100제
- 스프링
- 정렬
- Java
- 알고리즘
- Operating System
- web
- 백준
- 코드업
- react-redux
- 자료구조
- 리덕스장바구니
- error
- 협업
- codeup
- 프로그래머스
- memory
- 일상
- 토이프로젝트
- C++
- 타입스크립트
- Redux
- Spring
- 파이썬
- CPU 스케줄링
- 공부
- OS
Archives
- Today
- Total
감자튀김 공장🍟
[백준/24060] 알고리즘 수업 - 병합 정렬 1 (with 파이썬) 본문
반응형
✔ 문제
✔ 풀이
import sys
input = sys.stdin.readline
def merge_sort(arr, p, r):
if p < r and count <= k:
q = (p + r) // 2
merge_sort(arr, p, q)
merge_sort(arr, q+1, r)
merge(a, p, q, r)
def merge(arr, p, q, r):
global res, count
i, j = p, q + 1
t = 1
temp = []
while i <= q and j <= r:
if(arr[i] <= arr[j]):
temp.append(arr[i])
i += 1
else:
temp.append(arr[j])
j += 1
while i <= q:
temp.append(arr[i])
i += 1
while j <= r:
temp.append(arr[j])
j += 1
i, t = p, 0
while i <= r:
arr[i] = temp[t]
count += 1
if count == k:
res = arr[i]
break
i += 1
t += 1
n, k = map(int, input().split())
a = list(map(int, input().split()))
count, res = 0, -1
merge_sort(a, 0, n-1)
print(res)
✔ 후기
문제에 적혀있는 힌트를 보고 파이썬 언어에 맞게 수정하면 된다.
병합-정렬 코드이기 때문에 병합-정렬에 대해서 알고 풀어보면 훨씬 쉽다.
반응형
'Algorithm > BOJ' 카테고리의 다른 글
[백준/11729] 하노이 탑 이동 순서 (with 파이썬) (0) | 2022.11.24 |
---|---|
[백준/2447] 별 찍기 - 10 (with 파이썬) (0) | 2022.11.23 |
[백준/25501] 귀재의 귀재 (with 파이썬) (0) | 2022.11.21 |
[백준/10870] 피보나치 수 5 (with 파이썬) (0) | 2022.11.20 |
[백준/10872] 팩토리얼 (with 파이썬) (0) | 2022.11.19 |
Comments