Do it! 알고리즘 코딩테스트 4-4. 퀵 정렬 정의 퀵 정렬(quick start)은 기준값(pivot)을 선정해 해당 값보다 작은 데이터와 큰 데이터로 분류하는 것을 반복해 정렬하는 알고리즘 퀵 정렬 과정 데이터를 분할하는 pivot 선정 pivot을 기준으로 다음 a~e 과정을 거쳐 데이터를 2개의 집합으로 분리 2.a start가 가리키는 데이터가 pivot이 가리키는 데이터보다 작으면 start를 오른쪽으로 1칸 이동 2.b end가 가리키는 데이터가 pivot이 가리키는 데이터보다 크면 end를 왼쪽으로 1칸 이동 2.c start가 가리키는 데이터가 pivot이 가리키는 데이터보다 크고, end가 가리키는 데이터가 pivot이 가리키는 데이터보다 작으면 start, end 가 가리키는 데이..
Do it! 알고리즘 코딩테스트 삽입 정렬 정의 삽입 정렬: 이미 정렬된 데이터 범위에 정렬되지 않은 데이터를 적절한 위치에 삽입시켜 정렬하는 방식 삽입 정렬 수행 방식 현재 index에 있는 데이터 값을 선택 현재 선택한 데이터가 정렬된 데이터 범위에 삽입될 위치를 탐색 삽입 위치부터 index에 있는 위치까지 shift연산 수행 삽입 위치에 현재 선택한 데이터를 삽입하고 index++ 연산 수행 전체 데이터의 크기만큼 index가 커질 때까지 즉 선택할 데이터가 없을때까지 반복 ATM 인출 시간 계산하기(백준 11399) https://www.acmicpc.net/problem/11399 문제 코드 import sys input = sys.stdin.readline N = int(input()) ls..
Programmers 코드 처리하기 https://school.programmers.co.kr/learn/courses/30/lessons/181932 문제 코드 def solution(code): answer = '' # 최종 결과를 저장할 문자열 mode = True for idx, val in enumerate(code): # val : code[idx] if mode: if val != '1' and idx % 2 == 0: answer = answer + val elif val == '1': mode = False else: if val != '1' and idx % 2 != 0: answer = answer + val elif val == '1': mode = True if len(answer..
Do it! 알고리즘 코딩테스트 선택 정렬 선택 정렬은 대상 데이터에서 최대나 최소 데이터를 데이터가 나열된 순으로 찾아가며 선택하는 방법 시간 복잡도가 $O(n^2)$로 복잡하기 때문에 코딩테스트에서는 많이 사용하지 않음. 문제017 (백준 1427) https://www.acmicpc.net/problem/1427 [1427번: 소트인사이드 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net](https://www.acmicpc.net/problem/1427) 선택 정렬 풀이 import sys input = sys.stdin.readline N = list(input) length=len(N) for i in rang..
Do it! 알고리즘 코딩테스트 책 04. 버블 정렬 프로그램1(백준 1377번) 처음에 있던 인덱스와 최종적으로 바뀐 인덱스와의 차이중에서 가장 큰 값에 1을 더하면 됨. 코드 import sys input = sys.stdin.readline N = int(input()) # 입력 개수 A = [] for i in range(N): num = int(input()) A.append((num, i)) # 각 숫자와 원래 인덱스를 튜플로 저장 # 숫자를 기준으로 정렬하되, 원래 인덱스 정보를 유지 sorted_A = sorted(A) result = 0 for i in range(N): result = max(result, sorted_A[i][1] - i) print(result + 1) Referen..