728x90
728x90
Java2022. 12. 21. 23:07향상된 for문

조건 JDK 1.5 이상 사용 가능 사용할 변수는 지역변수로 인식된다 대상은 배열이거나 여러 원소를 포함한 자료형이어야 한다 → 배열은 향상된 for문을 입력해도 컴파일러가 기존 for문으로 변환시킨다 사용하기 for(자료형 변수명 : 배열명){ 문장 } int[] arr = {1,2,3,4,5,6,7,8,9}; for(int i : arr){ System.out.print(i); } // console // 123456789 // 다차원 배열도 활용가능 int[][] arr = {{1,2},{3,4},{5,6},{7,8}}; for(int[]arr2 : arr) { for(int i : arr2) { System.out.print(i); } } // Console // 12345678 예제 class ..

스택(Stack)
Java2022. 12. 21. 09:33스택(Stack)

후입선출(LIFO - Last In First Out)의 구조이다 ex) 음료수 진열대 사용하기 import java.util.Stack; Stack stack = new Stack(); // 값 추가하기 stack.push(1); stack.push(2); stack.push(3); // 맨 위에 있는 데이터(top)를 가져옴(제거) stack.pop(); // top 반환 stack.peek(); // 초기화 stack.clear(); // 그 외 메서드들 stack.size(); // stack의 크기 출력 stack.empty(); // stack이 비어있는지 stack.contains() // stack에 포함여부 stack.search(1) // 1이 있는 인덱스를 반환 참조 https://c..

야근지수 - 프로그래머스 Lv3 JAVA
코딩테스트/프로그래머스2022. 12. 20. 23:49야근지수 - 프로그래머스 Lv3 JAVA

문제 설명 회사원 Demi는 가끔은 야근을 하는데요, 야근을 하면 야근 피로도가 쌓입니다. 야근 피로도는 야근을 시작한 시점에서 남은 일의 작업량을 제곱하여 더한 값입니다. Demi는 N시간 동안 야근 피로도를 최소화하도록 일할 겁니다.Demi가 1시간 동안 작업량 1만큼을 처리할 수 있다고 할 때, 퇴근까지 남은 N 시간과 각 일에 대한 작업량 works에 대해 야근 피로도를 최소화한 값을 리턴하는 함수 solution을 완성해주세요. 제한 사항 works는 길이 1 이상, 20,000 이하인 배열입니다. works의 원소는 50000 이하인 자연수입니다. n은 1,000,000 이하인 자연수입니다. 입출력 예 works n result [4, 3, 3] 4 12 [2, 1, 2] 1 6 [1, 1] ..

우선순위 큐(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번째 차량이 고속도로에서 나간 지점이 적혀 있습니다. 차량의 진입/진출 지점에 카메라가 설치되어 있어도 카메라를 만난것으로 간주합니다. 차량의 진입 지점, 진출..

728x90
728x90
image