알고리즘
-
[퀵 정렬] 백준 11004번책/DoIt 알고리즘 코딩테스트 2024. 11. 12. 00:02
문제- Array를 오름차순 정렬했을 때 앞에서부터 K번째 있는 수를 구하는 프로그램을 작성하시오- 데이터 개수 ( 1 - K번째 수 ( 1 문제 분석시간 제한 2초 : 2억번 연산 내에 구현(NlogN 일경우, 시간제한에 있어서는 통과할 시간복잡도이다)- 오름차순 정렬이 필요하므로, 퀵정렬을 이용한 풀이를 진행pivot 정하는 방법pivot == k : k 번째 수를 찾은 것이므로 알고리즘을 종료pivot > k : pivot의 왼쪽 부분에 K가 있으므로 왼쪽 (S ~ pivot -1) 만 정렬을 수행한다pivot 퀵정렬은 pivot이 지정되있는 곳이 정렬된 숫자이다 슈도 코드N(숫자의 개수) K(K번째 수)A(숫자 데이터 저장 배열)for(N만큼 반복하기){ 배열 저장하기}퀵소트 실행K번째 데..
-
[정렬] 퀵 정렬알고리즘 2024. 11. 11. 23:03
정렬정렬 알고리즘정의시간복잡도삽입대상을 선택해 정렬된 영역에서 선택 데이터의 적절한 위치를 찾아 삽입하면서 정렬하는 방식O(N) ~ O(N^2)버블데이터의 인접 요소끼리 비교하고, swap 연산을 수행하며 정렬하는 방식O(N^2)선택대상에서 가장 크거나 작은 데이터를 찾아가 선택을 반복하면서 정렬하는 방식O(N^2)퀵pivot 값을 선정해 해당 값을 기준으로 정렬하는 방식O(NlogN) ~ O(N^2)힙이진트리를 이용하여 최대힙(오름차순)/최소힙(내림차순) 트리를 구성해정렬하는 방식O(NlogN)병합이미 정렬된 부분 집합들을 효율적으로 병합해 전체를 정렬하는 방식O(NlogN) + 추가적인 메모리 필요기수데이터의 자릿수를 바탕으로 비교해 데이터를 정렬하는 방식O(N) + 추가적인 메모리 필요 퀵정렬이란?..
-
[버블정렬] 백준 2750번책/DoIt 알고리즘 코딩테스트 2024. 11. 7. 12:35
문제N개의 수가 주어졌을 때, 이를 오름차순 정렬하는 프로그램을 작성하시오.- 1번째 줄에 수의 개수 N (1 - 2번째 줄부터 N개의 줄에 숫자가 주어짐- 수는 중복되지 않는다 문제 분석하기숫자 범위가 1,000으로 매우 작기 때문에, O(N^2) 시간복잡도 알고리즘을 사용해도 문제 없음버블정렬 알고리즘을 이용하여 문제풀이 슈도코드N(정렬할 수 개수)A(정렬할 배열 선언)for(i : 0~N -1){ for(j : 0 ~ N -1 -i) { 현재 A배열의 값보다 1칸 오른쪽 배열의 값이 더 작으면 두 수 바꾸기 }}A 배열 출력 구현import java.io.BufferedReader;import java.io.InputStreamReader;public class App ..
-
[정렬] 버블정렬알고리즘 2024. 11. 7. 11:10
정렬정렬 알고리즘정의시간복잡도삽입대상을 선택해 정렬된 영역에서 선택 데이터의 적절한 위치를 찾아 삽입하면서 정렬하는 방식O(N) ~ O(N^2)버블데이터의 인접 요소끼리 비교하고, swap 연산을 수행하며 정렬하는 방식O(N^2)선택대상에서 가장 크거나 작은 데이터를 찾아가 선택을 반복하면서 정렬하는 방식O(N^2)퀵pivot 값을 선정해 해당 값을 기준으로 정렬하는 방식O(NlogN) ~ O(N^2)힙이진트리를 이용하여 최대힙(오름차순)/최소힙(내림차순) 트리를 구성해 정렬하는 방식O(NlogN)병합이미 정렬된 부분 집합들을 효율적으로 병합해 전체를 정렬하는 방식O(NlogN) + 추가적인 메모리 필요기수데이터의 자릿수를 바탕으로 비교해 데이터를 정렬하는 방식O(N) + 추가적인 메모리 필요 버블정렬데..
-
우선순위 큐알고리즘 2024. 11. 6. 14:59
우선순위 큐?Priority Queue? 큐와 동일하게 FIFO 구조를 가지는데, 특이한점은 들어온 순서가 아닌 우선순위에 따라서 삽입/삭제 순서가 정해진다따로 정렬 기준을 정하지 않을경우, 오름차순으로 정렬이된다 (작은수가 우선순위)reverseOrder()를 사용하면 내림차순으로 정렬이된다 (큰 수가 우선순위) 우선순위 큐 특징높은 우선순위의 요소를 먼저 꺼내서 처리내부 요소는 힙으로 구성되어 이진트리 구조로 이루어짐힙으로 구성되어있어 시간복잡도는 O(NlogN)이다우선순위를 중요시할때 사용한다 우선순위큐 메서드선언)PriorityQueue [우선순위큐 이름] = new PriortyQueue();삽입add() / offer()을 사용하여 삽입add()는 가득차있으면, Exception 예외offer..
-
[알고리즘] 큐알고리즘 2024. 10. 29. 22:05
Queue 란?배열에서 발전된 형태의 자료구조선입선출 (FIFO) 로 이루어짐양방향에서 데이터가 들어오고 나간다데이터가 삽입 (맨뒤)데이터가 삭제 (맨앞) -> 먼저 들어온 데이터 Queue 관련 용어Rear큐에서 가장 끝 데이터를 가리킴FRONT큐에서 가장 앞의 데이터를 가리킴ADDrear 부분에 새로운 데이터를 삽입POLLfront 부분에 있는 데이터를 삭제하고 확인하는 연산PEEK큐의 맨앞에 있는 데이터를 확인할때 사용하는 연산 Queue 자주 사용너비우선탐색 (BFS)