728x90
728x90
우선순위 큐(Priority Queue)
Java2022. 12. 20. 23:28우선순위 큐(Priority Queue)

Priority Queue 기본 큐의 구조(FIFO : First In First Out)를 가지면서 데이터의 우선순위를 정해 우선순위가 높은 순서대로 나간다 우선순위 힙을 기반으로 구현된다 사용되는 생성자에 따라 자연 순서에 따라 또는 큐 생성 시 제공되는 Comparator에 따라 순서가 지정된다 데이터를 삽입할 때 우선순위의 최대, 최소를 구성하여 데이터가 빠지면 중간을 계속해서 채워넣는 방식 특징 높은 우선순위의 요소를 먼저 꺼내서 처리하는 구조이다 비교할 수 없는 객체는 큐를 만들 수 없다 (비교 가능한 기준이 있어야한다) 우선순위 큐는 값을 비교해야하므로 null을 허용지 않는다 내부구조는 이진트리 힙으로 구성되어있다 (내부구조가 힙으로 구성되어 있기에 시간 복잡도는 O(NLogN)이다) Ab..

CS/알고리즘2022. 12. 20. 22:53[알고리즘] 플로이드-워셜(Floyd-Warshall)

[  플로이드-워셜(Floyd-Warshall)  ]그래프에서 가능한 모든 노드 쌍에 대해 최단 거리를 구하는 알고리즘이다 다익스트라는 하나의 정점에서 다른 모든 정점까지의 최단 거리를 구하는 알고리즘(S.S.S.P - Single Source Shortest Path) 이었다면, 플로이드-워셜 알고리즘은 한 번 실행하여 모든 노드 간 최단 경로를 구할 수 있습니다.플로이드-워셜 알고리즘은 다익스트라 알고리즘과는 다르게 음의 간선도 사용할 수 있다.다익스트라(Dijkstra) 알고리즘다이나믹 프로그래밍을 활용한 대표적인 최단 경로 탐색 알고리즘이다특정한 하나의 정점에서 다른 모든 정점으로 가는 최단 경로를 알려준다음의 간선을 포함할 수 없지만 현실 세계에서는 음의 간선이 존재하지 않기 때문에 현실 세계에..

Java2022. 12. 20. 19:26객체지향 설계 원칙 - SOLID

[ 객체 지향 설계 원칙 ( SOLID ) ] 컴퓨터 프로그래밍에서 SOLID란 로버트 C. 마틴이 2000년대 초반에 명명한 객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙을 마이클 페더스가 두문자어 기억술로 소개한 것이다. 프로그래머가 시간이 지나도 유지 보수와 확장이 쉬운 시스템을 만들고자 할 때 이 원칙들을 함께 적용할 수 있다. SOLID 원칙들은 소프트웨어 작업에서 프로그래머가 소스 코드가 읽기 쉽고 확장하기 쉽게 될 때까지 소프트웨어 소스 코드를 리팩터링하여 코드 냄새를 제거하기 위해 적용할 수 있는 지침이다. 이 원칙들은 애자일 소프트웨어 개발과 적응적 소프트웨어 개발의 전반적 전략의 일부다. SOLID 원칙들은 결국 자기 자신 클래스 안에 응집도는 내부적으로 높이고, 타 클래스들 간..

CS/알고리즘2022. 12. 20. 14:12알고리즘 - 탐욕법(Greedy Algorithm)

탐욕법(Greedy Algorithm)※ Greedy : 탐욕스러운, 욕심 많은...탐욕 알고리즘 : 선택의 순간마다 당장 눈앞에 보이는 최적의 상황만을 쫓아 최종적인 해답에 도달하는 방법최적해를 구하는 데에 사용되는 근사적인 방법이다.여러 경우 중 하나를 결정해야 할 때마다 그 순간에 최적이라고 생각되는 것을 선택해 나가는 방식으로 진행하여 최종적인 해답에 도달하지만 그것이 최적이라는 보장은 없다.탐욕 알고리즘을 적용할 수 있는 문제들은 지역적으로 최적이면서 전역적으로 최적인 문제들이다.     탐욕 알고리즘 문제를 해결하는 방법선택 절차(Selection Procedure) : 현재 상태에서의 최적의 해답을 선택한다.적절성 검사(Feasibility Check) : 선택된 값이 문제의 조건을 만족하는..

단속카메라 - 프로그래머스 LV3 탐욕법 JAVA
코딩테스트/프로그래머스2022. 12. 20. 10:48단속카메라 - 프로그래머스 LV3 탐욕법 JAVA

문제 설명 속도로를 이동하는 모든 차량이 고속도로를 이용하면서 단속용 카메라를 한 번은 만나도록 카메라를 설치하려고 합니다. 고속도로를 이동하는 차량의 경로 routes가 매개변수로 주어질 때, 모든 차량이 한 번은 단속용 카메라를 만나도록 하려면 최소 몇 대의 카메라를 설치해야 하는지를 return 하도록 solution 함수를 완성하세요. 제한사항 차량의 대수는 1대 이상 10,000대 이하입니다. routes에는 차량의 이동 경로가 포함되어 있으며 routes[i][0]에는 i번째 차량이 고속도로에 진입한 지점, routes[i][1]에는 i번째 차량이 고속도로에서 나간 지점이 적혀 있습니다. 차량의 진입/진출 지점에 카메라가 설치되어 있어도 카메라를 만난것으로 간주합니다. 차량의 진입 지점, 진출..

Java2022. 12. 19. 23:13이차원 배열의 정렬 - Arrays.sort(arr, Comparator) / JAVA

1차원배열의 정렬import java.util.Arrays;// 오름차순Arrays.sort(arr);// 내림차순 기본타입에 선언 불가!! 참조타입에 가능Arrays.sort(arr, Collections.reverseOrder());//참조타입 변환(ex - int[])Integer[] refArr = Arrays.stream(arr).boxed().toArray(Integer[]::new);//변환 후 정렬Arrays.sort(refArr, Collections.reverseOrder());2차원배열의 정렬import java.util.Arrays;import java.util.Comparator;// Comparator는 인터페이스이기때문에 오버라이딩Arrays.sort(arr, new Compa..

순위 - 프로그래머스 LV3 JAVA
코딩테스트/프로그래머스2022. 12. 19. 22:29순위 - 프로그래머스 LV3 JAVA

문제 설명 n명의 권투선수가 권투 대회에 참여했고 각각 1번부터 n번까지 번호를 받았습니다. 권투 경기는 1대1 방식으로 진행이 되고, 만약 A 선수가 B 선수보다 실력이 좋다면 A 선수는 B 선수를 항상 이깁니다. 심판은 주어진 경기 결과를 가지고 선수들의 순위를 매기려 합니다. 하지만 몇몇 경기 결과를 분실하여 정확하게 순위를 매길 수 없습니다. 선수의 수 n, 경기 결과를 담은 2차원 배열 results가 매개변수로 주어질 때 정확하게 순위를 매길 수 있는 선수의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 선수의 수는 1명 이상 100명 이하입니다. 경기 결과는 1개 이상 4,500개 이하입니다. results 배열 각 행 [A, B]는 A 선수가 B 선수를 이겼다는 의..

[알고리즘] 이진탐색(이분탐색) - Binary Search
CS/알고리즘2022. 12. 18. 12:27[알고리즘] 이진탐색(이분탐색) - Binary Search

Binary Search정렬된 데이터 집합을 이분화 하면서 탐색하는 방법정렬되어 있어야 한다  보통 세 개의 변수를 지정해 두고 (ex : left, mid, right)찾고자 하는 값, 즉 mid의 값이 찾아낸 값보다 크면 mid는 찾아낸 값보다 오른쪽에 위치하고 작다면 왼쪽에 위치한다public static int binarySearch(int arr[], int x) { int mid; int left = 0; int right = arr.length - 1; // 배열을 다 돌때까지 반복 while (left

728x90
728x90
image