https://www.acmicpc.net/problem/23881
23881번: 알고리즘 수업 - 선택 정렬 1
첫째 줄에 배열 A의 크기 N(5 ≤ N ≤ 10,000), 교환 횟수 K(1 ≤ K ≤ N)가 주어진다. 다음 줄에 서로 다른 배열 A의 원소 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 109)
www.acmicpc.net
import sys
n, k = map(int,sys.stdin.readline().split())
arr = list(map(int, sys.stdin.readline().split()))
count = 0
answer = -1
def selection(arr):
global count, answer
for i in range(n-1, 0, -1):
max_item , idx = arr[0], 0 #최대수를 첫번째로 지정
for j in range(1, i+1):
if(arr[j] > max_item): #인덱스 1부터 max와 비교해가면서 스위치.
max_item, idx = arr[j], j
#max_item이 가장 마지막 원소가 아닐 경우,
#마지막 원소와 자리 교환한 뒤에 count값 증가시켜주기.
if arr[i] != arr[idx]:
arr[i], arr[idx] = arr[idx], arr[i]
count += 1
if count == k:
answer = f'{arr[idx]} {arr[i]}'
print(selection(arr))
'Problems & Solutions' 카테고리의 다른 글
11441 합 구하기 (0) | 2022.07.26 |
---|---|
1058 친구 (0) | 2022.07.25 |
1244 스위치 켜고 끄기 (0) | 2022.07.25 |
[1월 15일] 선택정렬 & 문자열 카운트,문자 포함 여부,단어 개수,상수,StringTokenizer,StringBuilder (0) | 2022.01.15 |
[1월 11일] 숫자 각 자릿수 활용 (0) | 2022.01.15 |