일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 백준
- 탐색
- Git
- 알고리즘
- 순차 탐색
- 그리디
- 동적 계획
- 정렬
- 재귀 함수
- 자료구조
- 스택
- 유닉스
- 자기개발
- 그래프
- 우분투
- git hub
- sys.stdin.readline()
- MiniHeap
- NQueen
- format 메서드
- 분할 정복
- 파이썬
- 기초
- 배열
- type 함수
- UNIX
- 문법
- 이진 탐색
- 트리
- IT
Archives
- Today
- Total
코딩고치
[파이썬][백준] 11004번: k번째 수 본문
1. 문제
주소: https://www.acmicpc.net/problem/11004
문제 유형: 정렬
2. 소스코드
- Quick Slection으로 정렬하지 않고 바로 k번째 수를 찾으려 하였으나 메모리 초과
def q_selection(num_list, k):
pivot = num_list[0]
left, right, mid = [], [], []
for num in num_list:
if num < pivot:
left.append(num)
elif num > pivot:
right.append(num)
else:
mid.append(num)
if k < len(left):
return q_selection(left, k)
elif k < len(left) + 1:
return mid[0]
else:
k = k - len(left) - len(mid)
return q_selection(right, k)
n, k = map(int, input().split(' '))
n_list = list(map(int, input().split(' ')))
print(q_selection(n_list, k - 1))
- 병합 정렬을 이용하여 pypy3로 다시 제출 (python 3으로 제출할 경우 시간 초과)
def mergesplit(num_list):
if len(num_list) <= 1:
return num_list
mid = len(num_list) // 2
left = mergesplit(num_list[:mid])
right = mergesplit(num_list[mid:])
return merge(left, right)
def merge(left, right):
result = []
left_index, right_index = 0, 0
while len(left) > left_index and len(right) > right_index:
if left[left_index] > right[right_index]:
result.append(right[right_index])
right_index += 1
else:
result.append(left[left_index])
left_index += 1
while len(left) > left_index:
result.append(left[left_index])
left_index += 1
while len(right) > right_index:
result.append(right[right_index])
right_index += 1
return result
n, k= map(int, input().split(' '))
n_list = list(map(int, input().split(' ')))
sorted_list = mergesplit(n_list)
print(sorted_list[k - 1])
'파이썬 > 백준 문제' 카테고리의 다른 글
[파이썬][백준] 1568번: 새 (0) | 2020.05.31 |
---|---|
[파이썬][백준] 1543번: 문서 검색 (0) | 2020.05.31 |
[파이썬][백준] 2751번: 수 정렬하기 2 (0) | 2020.05.31 |
[파이썬][백준] 7490번: 0 만들기 (0) | 2020.05.30 |
[파이썬][백준] 1074번: Z (0) | 2020.05.29 |
Comments