728x90
참고자료: 이것이 코딩테스트다
실전 - 위에서 아래로
data_count = int(input())
data_list = []
for _ in range(data_count):
data_list.append(int(input()))
data_list = sorted(data_list, reverse = True)
for data in data_list:
print(data, end = ' ')
👉🏻가장 익숙한 정렬 라이브러리를 사용해보았다.
- data_list에 숫자를 받아 저장한다.
- sorted를 이용해 정렬한다. 이 때 reverse = True로 설정하면 내림차순으로 정렬할 수 있다.
- 마지막으로 for문을 이용해 출력했다. end = ' ' 를 이용해 각 숫자를 공백으로 구분했다.
실전 - 성적이 낮은 순서로 학생 출력하기
student_count = int(input())
student_and_grade_dict= {}
#각 학생과 성적을 각각 키와 값으로 만들어 student_and_grade_dict에 넣어준다.
#ex) {'홍길동': 95, '이순신': 77}
for _ in range(student_count):
student_and_grade = input().split(' ')
student = student_and_grade[0]
grade = int(student_and_grade[1])
student_and_grade_dict[student] = grade
#sorted에 key를 정해주어 정렬했다.
answer = sorted(student_and_grade_dict.items(), key = lambda item : item[1])
for i in answer:
print(i[0], end = ' ')
👉🏻이번에는 sorted에 key를 지정해 사용해보았다.
- 먼저 for문을 통해 student_and_grade_dict 딕셔너리에 학생을 key로 점수를 value로 해서 저장했다.
- sorted의 key는 lambda 함수를 이용해 딕셔너리의 value값으로 지정해서 정렬했다.
실전 - 두 배열의 원소 교체
N, K = map(int, input().split())
list1 = list(map(int, input().split()))
list2 = list(map(int, input().split()))
list1 = sorted(list1)
list2 = sorted(list2, reverse=True)
for i in range(K):
list1[i], list2[i] = list2[i], list1[i]
print(sum(list1))
👉🏻아래와 같이 풀었다!
- 동빈이의 리스트는 오름차순, 다른 리스트는 내림차순으로 정렬해 각각 list1, list2로 정리했다.
- for문을 돌리며 첫 번째 원소부터 차례대로 k번 바꿔치기 했다.
N, K = map(int, input().split())
list1 = list(map(int, input().split()))
list2 = list(map(int, input().split()))
list1 = sorted(list1)
list2 = sorted(list2, reverse=True)
for i in range(K):
if list1[i] < list2[i]:
list1[i], list2[i] = list2[i], list1[i]
else: #동빈의 원소가 크거나 같은 경우 바꿔치기를 중단한다.
break
print(sum(list1))
✍🏻책 풀이를 읽으며 내가 놓친점이 있다는 것을 깨달았다. 바로 바꿔치기를 하다가 동빈의 리스트 원소가 다른 사람의 원소보다 크거나 같을 때의 경우 예외처리를 해줘야 한다는 점이다. 그 점을 고려하면 코드는 위과 같다.
728x90
'그 땐 Algorithm했지 > 그 땐 Python했지' 카테고리의 다른 글
[TAVE/이코테] ch07 이진 탐색 | 실전 문제 (0) | 2022.03.30 |
---|---|
[TAVE/이코테] ch07 이진 탐색 | 개념 정리 (0) | 2022.03.30 |
[TAVE/이코테] ch06 정렬 | 개념 정리 (0) | 2022.03.27 |
[TAVE/이코테] ch05 DFS/BFS | 개념 정리 | 실전 문제 (0) | 2022.03.26 |
[TAVE/이코테] ch04 구현 | 개념 정리 | 실전 문제 (0) | 2022.03.25 |