본문 바로가기
ALGORITHM/이코테

[ALGORITHM] 6. 정렬

by 뭉망뭉 2022. 3. 4.

이것이 취업을 위한 코딩테스트다 python 문제 풀이

6-10. 실전문제 ‘위에서 아래로’

# C6. 정렬 - 실전문제 '위에서 아래로'

n = int(input())
nums = []
for i in range(n):
    nums.append(int(input()))

nums = sorted(nums, reverse=True)

for i in nums:
    print(i, end=' ')

 

6-11. 실전문제 ‘성적이 낮은 순서대로 학생 출력하기’

# C6. 정렬 - 실전문제 '성적이 낮은 순서대로 학생 출력하기'

n = int(input())
array = []
for i in range(n):    
    name, score = input().split() #원래 map으로 하려고 했는데 둘 다 int형인 게 아니라서 그냥 입력 받음
    array.append((name, int(score))) #append는 입력값 하나만 받기 때문에 튜플형 세트로 보려면 ()로 묶어야 함. 

# 두 번째 값인 성적을 기준값으로 정렬할 수 있도록 성적값 리턴
def make_key(put):
    return put[1]

array = sorted(array, key=make_key) #키 값 기준 정렬
#함수 lambda로 만들면 
#array = sorted(array, key=lambda student: student[1])
#로 하고 밑에 for문에서 student[0] 프린트하면 됨.

for i in range(n):
    print(array[i][0], end=' ') #array[i][0]은 이름, array[i][1]은 성적

 

6-12. 실전문제 ‘두 배열의 원소 교체’

# C6. 정렬 - 실전문제 '두 배열의 원소 교체'

n, k = map(int, input().split())
a = list(map(int, input().split()))
b = list(map(int, input().split()))

a.sort()
b.sort(reverse=True)  # b는 큰 값부터 오게.

for i in range(k):
    if a[i]  < b[i]: # a가 b보다 작은 경우 swap
        a[i], b[i] = b[i], a[i]
    else: break

print(sum(a))

'ALGORITHM > 이코테' 카테고리의 다른 글

[ALGORITHM] 8. 다이나믹 프로그래밍  (0) 2022.03.06
[ALGORITHM] 7. 이진 탐색  (0) 2022.03.05
[ALGORITHM] 5. DFS/BFS  (0) 2022.03.01
[ALGORITHM] 4. 구현  (0) 2022.02.28
[ALGORITHM] 3. 그리디  (0) 2022.02.27

댓글