정렬(18)
-
백준 2751 파이썬 병합정렬
백준 2751 - 수 정렬하기 2 문제 https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 답안 코드 : import sys input = sys.stdin.readline print = sys.stdout.write def merge_sort(s, e): if e - s < 1: return m = int(s + (e - s) / 2) merge_sort(s, m) merge_sort(m + 1, e) for i in range(s, ..
2024.02.21 -
백준 11004 파이썬 퀵 정렬
백준 11004 - k번째 수 문제 https://www.acmicpc.net/problem/11004 11004번: K번째 수 수 N개 A1, A2, ..., AN이 주어진다. A를 오름차순 정렬했을 때, 앞에서부터 K번째 있는 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 답안 코드 : import sys input = sys.stdin.readline N, K = map(int, input().split()) A = list(map(int, input().split())) def quickSort(S, E, K): global A if S < E: pivot = partition(S, E) if pivot == K: # K번째 수가 pivot이면 더이상 구할 필요 없음 return..
2024.02.20 -
백준 1427 파이썬 선택 정렬 사용
백준 1427 - 소트인사이드 문제 https://www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 답안 코드 : import sys print = sys.stdout.write A = list(input()) for i in range(len(A)): Max = i for j in range(i + 1, len(A)): if A[j] > A[Max]: # 내림차순이므로 최댓값을 찾음 Max = j if A[i] 파이썬에서는 input 데이터를 list로 변환하면 자동으로 자릿수 나누어 리스트화 해준다. # ( 파이썬 짱 ) # 이번에도 그저 s..
2024.02.18 -
백준 2750 파이썬 정렬(sort함수 사용x) 직접 구현
백준 2750 - 수 정렬하기 문제 https://www.acmicpc.net/problem/2750 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 답안 코드 : N = int(input()) A = [0]*N for i in range(N): A[i] = int(input()) for i in range(N-1): for j in range(N-1-i): if A[j] > A[j+1]: temp = A[j] A[j] = A[j+1] A[j+1] = temp for i in range(N): print(A[i]) ..
2024.02.17 -
정렬 알고리즘 (버블 정렬, 선택 정렬, 삽입 정렬, 퀵 정렬, 병합 정렬, 기수 정렬)
정렬 알고리즘 정의를 내가 아는가? 정렬 알고리즘 정의 버블 데이터의 인접 요소끼리 비교, swap 연산을 수행하며 정렬 선택 대상에서 가장 크거나 작은 데이터를 찾아서 선택을 반복하며 정렬 삽입 대상을 선택해 정렬된 영역에서 선택 데이터의 적절한 위치를 찾아 삽입하면서 정렬 퀵 pivot 값을 선정해 해당 값을 기준으로 정렬 병합 이미 정렬된 부분 집합들을 병합해 전체를 정렬 기수 데이터의 자릿수를 바탕으로 비교해 데이터를 정렬 버블 정렬의 핵심 이론 버블 정렬 (bubble sort)은 두 인접한 데이터의 크기를 비교해 정렬하는 방법입니다. 간단하게 구현할 순 있지만, 시간 복잡도는 O(n^2)으로 다른 정렬 알고리즘보다 속도가 느린 편입니다. 다음 그림과 같이 루프를 돌면서 인접한 데이터 간의 sw..
2024.02.07 -
백준 2750 파이썬 (+시간 복잡도 활용)
백준 2750 : 수 정렬하기 문제 https://www.acmicpc.net/problem/2750 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 답안 코드 : n = int(input()) L = [] for i in range(n): L.append(int(input())) L.sort() for i in range(len(L)): print(L[i]) 생각 : 시간 복잡도 활용하기 시간 제한이 1초이므로 이 조건을 만족하려면 2,000만 번 이하의 연산 횟수로 문제를 해결해야 한다. (시간 복잡도는 항상 최..
2024.01.07