Java/java 알고리즘 5

퀵 정렬

Java의 Arrays.sort는 듀얼피봇 퀵정렬(Dual-Pivot QuickSort)을 사용한다. 듀얼 피봇 퀵정렬은 피봇을 2개를 두고 3개의 구간을 만들어 퀵정렬을 진행한다는 것이다. 이 방식은 하나의 피봇으로 진행하는 퀵 정렬에 비해 좋은 성능을 낸다고 알려진다. 그 이유는 퀵 정렬의 경우 최악의 경우의 피봇을 잡았을 때 (오름차순에서 가장 작은 수 or 내림차순에서 가장 높은 수) 버블정렬과 같은 시간 복잡도가 나온다. 때문에 평균은 O(nlog₂n)로 준수한 시간 복잡도를 갖지만 최악의 경우 O(n²)가 나온다. 때문에 두개의 피봇을 두고 퀵 정렬을 한다. 그렇기에 그 기본이 되는 퀵 정렬에 대해 공부해 보았다. 퀵정렬의 정렬 방식 피벗을 기준으로 피벗보다 작은 요소들은 피벗의 왼쪽에 위치시..

메서드 정리

java.lang ================================================================ String toLowerCase() String인스턴스에 저장되어 있는 모든 문자열을 소문자로 변환하여 반환한다 String trim() 문자열의 왼쪽 끝과 오른쪽 끝에 있는 공백을 없앤 결과를 반환한다. 이 때 문자열 중간에 있는 공백은 제거되지 않는다. String substring(int begin) String substring(int begin, int end) 주어진 시작 위치 (begin)부터 끝 위치(end) 범위에 포함된 문자열을 얻는다. 이 때, 시작 위치와 문자는 범위에 포함되지만, 끝 위치의 문자는 포함되지 않는다. (begin

스텍, 큐

예제 Stack st = new Stack(); //스택 객체생성 st.push(1); //스택에 1 추가 st.pop(); //스택 하나 꺼내기 st.isEmpty() //스택이 비었는가 ture false import java.util.Stack; class Solution { boolean solution(String s) { boolean answer = true; String res = "YES"; Stack st = new Stack(); for (int i = 0; i < s.length(); i++) { if (s.charAt(i) == '(') { st.push(1); } else if (s.charAt(i) == ')') { if (st.isEmpty()) { answer = false..

완주하지 못한 선수

문제 설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 풀이 (단순소팅) 참가자(participant)와 완주자 (completion)을 소팅..

평균 구하기

문제 설명 정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요. 제한사항 arr은 길이 1 이상, 100 이하인 배열입니다. arr의 원소는 -10,000 이상 10,000 이하인 정수입니다. 풀이 1) 하드 코딩 arr가 null일 경우 0을 리턴 arr의 값을 모두 더한 총합을 구함 arr.length를 나누어 평균을 구함 import java.util.Arrays; import java.util.Spliterator; class Solution { public double solution(int[] arr) { double answer = 0; if(arr!=null){ //(1) for(int i : arr){ answer+=i; i++; } return..