본문 바로가기
반응형

Algorithm283

[Python] 백준 10989번 - 수 정렬하기 3 문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 시간 제한 Java 8: 3 초 Java 8 (OpenJDK): 3 초 Java 11: 3 초 Kotlin (JVM): 3 초 Java 15: 3 초 메모리 제한 Java 8: 512 MB Java 8 (OpenJDK): 512 MB Java 11: 512 MB Kotlin (JVM): 512 MB Java 15: 512 MB 수를 하나씩 입력받아서 오름차순 정렬하여 다시.. 2022. 9. 29.
[Python] 백준 2231번 - 분해합 문제 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자릿수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245는 256의 생성자가 된다. 물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. 반대로, 생성자가 여러 개인 자연수도 있을 수 있다. 자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 출력 첫째 줄에 답을 출력한다. 생성자가 없는 경우에는 0을 출력한다. 코드 n = input() min_m = int(n)-len(n)*9 check = 0 if.. 2022. 9. 20.
[Python][이코테] 계수 정렬 계수 정렬 계수 정렬(count sort)은 특정한 조건이 부합할 때만 사용할 수 있지만 매우 빠른 정렬 알고리즘이다. 사용하기 좋은 조건은 모든 데이터가 정수 데이터의 크기 범위가 제한되어 정수 형태로 표현할 수 있을 때 모든 범위를 담을 수 있는 크기의 리스트(배열) 선언 필수 즉 정수 형태의 리스트를 정렬할 때 가장 빠른 속도로 정렬이 가능한 알고리즘이다. 계수 정렬의 특징은 앞의 세 가지 정렬(선택, 삽입, 퀵)처럼 직접 데이터의 값을 비교하는 방식이 아니다 -> 비교 기반의 정렬 알고리즘이 아님 사용 계수 정렬은 일반적으로 별도의 리스트를 선언하고 그 안에 정렬에 대한 정보를 담는다. 예를 들어서 7 5 9 0 3 1 6 2 9 1 4 8 0 5 2 리스트가 있으면 가장 큰 데이터는 9, 가장 .. 2022. 9. 17.
[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.
반응형