본문 바로가기
반응형

이것이 코딩테스트다20

[Python][이코테] 부품 찾기 입력 조건 첫째 줄에 정수 N이 주어진. (1 ≤ N ≤ 1,000,000) 둘째 줄에는 공백으로 구분하여 N개의 정수가 주어진다. 이때 정수는 1보다 크고 1,000,000이하이다. 셋째 줄에는 정수 M이 주어진다. (1 ≤ M ≤ 100,000) 넷째 줄에는 공백으로 구분하여 M개의 정수가 주어진다. 이때 정수는 1보다 크고 1,000,000이하이다. 출력 조건 첫째 줄에 공백으로 구분하여 각 부품이 존재하면 yes를, 없으면 no를 출력한다. 입력 예시 5 8 3 7 9 2 3 5 7 9 출력 예시 no yes yes 앞선 이진탐색 알고리즘을 연습하기위해 재귀와 반복문 두가지 방법을 사용했고 추가적으로 만약 이걸 상관없이 풀었을 경우 코드 또한 풀었다. 1. 이진탐색 재귀 # 7-3 이진 탐색 부품.. 2022. 10. 14.
[Python][이코테] 두 배열의 원소 교체 동빈이는 두 개의 배열 A와 B를 가지고 있다. 두 배열은 N개의 원소로 구성되어 있으며, 배열의 원소는 모두 자연수이다. 동빈이는 최대 K번의 바꿔치기 연산을 수행할 수 있는데, 바꿔치기 연산이란 배열 A에 있는 원소 하나와 배열 B에 있는 원소 하나를 골라서 두 원소를 서로 바꾸는 것을 말한다. 동빈이의 최종 목표는 배열 A의 모든 원소의 합이 최대가 되도록 하는것이며, 여러분은 동빈이를 도와야 한다. 입력 조건 첫 번째 줄에 N, K가 공백으로 구분되어 입력된다. (1 ≤ N ≤ 100,000, 0 ≤ K ≤ N) 두 번째 줄에 배열 A의 원소들이 공백으로 구분되어 입력된다. 모든 원소는 10,000,000보다 작은 자연수이다. 세 번째 줄에 배열 B의 원소들이 공백으로 구분되어 입력된다. 모든 원.. 2022. 10. 9.
[Python][이코테] 위에서 아래로 입력 조건 첫째 줄에 수열에 속해 있는 수의 개수 N이 주어진다. (1 ≤ N ≤ 500) 둘째 줄부터 N + 1번째 줄까지 N개의 수가 입력된다. 수의 범위는 1 이상 100000 이하의 자연수이다. 출력 조건 입력으로 주어진 수열이 내림차순으로 정렬된 결과를 공백으로 구분하여 출력한다. 동일한 수의 순서는 자유롭게 출력해도 괜찮다. 입력 예시 3 15 27 12 출력 예시 27 15 12 # 6-7 정렬 위에서 아래로 n = int(input()) data = [] for _ in range(n): data.append(int(input())) data.sort(reverse=True) for i in range(n): print(data[i], end=' ') 2022. 10. 7.
[Python][이코테] 퀵 정렬 퀵 정렬 퀵 정렬은 이름대로 굉장히 빠른 정렬을 해주는 알고리즘이다. 또한 굉장히 많이 쓰인다. 기준 데이터를 설정하고 그 기준보다 큰 데이터와 작은 데이터의 위치를 바꾼다. 이게 퀵 정렬의 기본이다. 과정 리스트 안에 있는 한 요소를 선택한다. 이를 피벗(pivot) 이라고 한다. 피벗을 기준으로 피벗보다 작은 값은 왼쪽, 큰 값은 오른쪽으로 나눈다. 먼저 사용된 피벗을 제외한 왼쪽 리스트와 오른쪽 리스트를 기준으로 피벗을 각자 정해 다시 정렬한다. 나눠진 리스트들이 분할이 불가능할 때까지 반복한다. array = [5, 7, 9, 0, 3, 1, 6, 2, 4, 8] def quick_sort(array, start, end): if start >= end: #원소가 1개인 경우 종료 return p.. 2022. 9. 13.
반응형