[코테]정렬-실전문제

uuuu.jini·2022년 11월 6일
0

1] 위에서 아래로


하나의 수열에는 다양한 수가 존재한다. 이러한 수는 크기에 상관없이 나열되어 있다. 이 수를 큰 수부터 작은 수의 순서로 정렬해야 한다. 수열을 내림차순으로 정렬하는 프로그램을 만드시오.

입력

  • 첫째 줄에 수열에 속해 있는 수의 개수 N이 주어진다.
  • 둘째 줄 부터 N+1번째 줄까지 N개의 수가 입력된다.
    출력
  • 입력으로 주어진 수열이 내림차순으로 정렬된 결과
import sys
input = sys.stdin.readline

N = int(input())
array = [int(input()) for _ in range(N)]

array.sort(reverse=True)

for i in array:
    print(i,end=" ")

내림차순 정렬은 reverse=True 사용!

2] 성적이 낮은 순서로 학생 출력하기


N명의 학생 정보가 있다. 학생 정보는 학생의 이름과 학생의 성적으로 구분된다. 각 학생의 이름과 성적 정보가 주어졌을 때 성적이 낮은 순서대로 학생의 이름을 출력하는 프로그램을 작성하라

입력

  • 첫 번째 줄: 학생 수 N
  • 두 번째 줄부터 N+1줄: 학생의 이름을 나타내는 문자열 A와 학생의 성적을 나타내는 정수 B
    출력
  • 학생의 이름을 성적이 낮은 순서대로 출력

import sys
input = sys.stdin.readline

N = int(input())
students = []
for _ in range(N):
    name, score = input().split()
    students.append((name,int(score)))

students.sort(key=lambda x:x[1])

for i in students:
    print(i[0],end=' ')

3] 두 배열의 원소 교체


두 개의 배열 A와 B를 가지고 있다. 두 배열은 N개의 원소로 구성되어 있으며, 배열의 원소는 모두 자연수이다. 최대 K번의 바꿔치기 연산을 수행할 수 있다. 바꿔치기 연산이란 배열 A에 있는 원소 하나와 배열 B에 있는 원소 하나를 골라서 두 원소를 서로 바꾸는 것을 말한다. 최종 목표는 배열 A의 모든 원소의 합이 최대가 되도록 하는 것이다.

N,K 그리고 배열 A와 B의 정보가 주어졌을 때, 최대 K번의 바꿔치기 연산을 수행하여 만들 수 있는 배열 A의 모든 원소의 합이 최댓값을 출력하는 프로그램을 작성하시오.

입력

  • 첫번째 줄에 N,K
  • 두번째 줄에 A의 원소
  • 세번째 줄에 B의 원소
    출력
  • K번의 바꿔치기 연산 수행하여 만들수 있는 A의 합의 최댓값
import sys
input = sys.stdin.readline

N,K = map(int,input().split())
A = list(map(int,input().split()))
B = list(map(int,input().split()))

A.sort()
B.sort(reverse=True)
for i in range(K):
    if A[i] < B[i]:
        A[i] = B[i]
    else:
        break
print(sum(A))
profile
멋쟁이 토마토

0개의 댓글