java
-
코딩테스트 고득점 kit / 스택&큐 / 기능개발 / JAVA알고리즘/프로그래머스 2020. 4. 22. 22:36
풀이방법 1 import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Deque; import java.util.List; class Solution { public int[] solution(int[] progresses, int[] speeds) { int[] answer = {}; Deque q = new ArrayDeque(); List l = new ArrayList(); for(int i=0; i
-
알고리즘 문제풀때 정규식(Regex)을 쓰는것이 좋을까??알고리즘/알고리즘 Tip! 2020. 4. 20. 23:10
정규 표현식은 특정한 규칙을 가진 문자열의 집합을 표현하기 위해 쓰이는 형식 언어입니다. 하지만, 알고리즘 성능에는 그다지 좋지가 않습니다. 그 이유는 "백트래킹" 때문입니다. 정규식은 왼쪽에서 오른쪽으로 탐색을 하는데 100% 매칭 되지 않으면 다시 뒤로 되돌아가면서 매칭을 시도합니다. 이를 백트래킹이라고 합니다. 자바 같은 경우에는 심지어 컴파일 작업을 거쳐야지만 사용이 가능합니다. Pattern.compile("ABC").matcher(s).find() s.contains("ABC") 다음 두 코드 중 어느 게 더 빠를까요?? 전자는 컴파일하고 (상대적으로) 복잡한 정규 표현식을 반복하므로 단순히 일련의 문자를 찾는 후자가 조금 더 빠릅니다. 그러면 정규식을 안 쓰는 게 좋지 않는가?? 속도만을 생..
-
[AWS EC2] Ubuntu 에 JAVA 설치 및 환경설정Infra/aws 2020. 4. 20. 21:06
설치하기 전에 java -version 명령어로 설치가 되어있는지 먼저 확인합니다. 그럼 다음과 같이 설치된것은 없지만 설치하라고 추천목록이 나타나게 됩니다. (로그에 404에러뜨고 설치안되는 경우가 많아 비추합니다) 설치할 수 있는 자바는 오라클 jdk와 open jdk 두 종류 인데 오라클 jdk는 아마존 리눅스에서 FTP로 다운받아서 사용해봤기 때문에 이번에는 openjdk를 설치하도록 하겠습니다. openJdk vs 오라클Jdk 둘중 어느것을 사용한다고 해서 막 눈에 띄는 차이가 있고 그런건 아니니 걱정안하셔도 됩니다. 그럼 이제 다음 명령어로 다운받아 보겠습니다. $ sudo apt-get install openjdk-8-jdk 다운이 잘 되었는지 버전을 확인합니다. $ java -version..
-
[JAVA] 큐 구현은 어느것이 적당할까? LinkedList vs ArrayDeque알고리즘/알고리즘 Tip! 2020. 4. 20. 12:42
보통 배열의 경우 고정된 크기가 주어지기 때문에 검색이 빠르지만 삽입 삭제시 배열 크기 재 조정때문에 추가 비용 및 연산이 발생합니다. 그리고 공간 비효율성과 배열의 재배치가 일어납니다. 그렇다면 큐는 배열보다는 리스트로 구현하는게 낫지 않을까 하는 생각이 들 수 있습니다. 그러나 Queue를 구현할때 ArrayDeque로 구현하는 것이 LinkedList로 구현하는 것보다 빠르다고 Java API document는 설명하고 있습니다. 왜 ArrayDeque가 LinkedList보다 빠른걸까요?? 그 이유는 다음과 같이 2개 입니다. 출처 : http://javaqueue2010.blogspot.com/ ArrayDeque는 Array에 의해 지원되며 Array는 LinkedList보다 cache-loc..
-
[JAVA] 스택(Stack) vs 덱(Deque)알고리즘/알고리즘 Tip! 2020. 4. 19. 19:06
Stack 클래스는 List 컬렉션 클래스의 Vector 클래스를 상속받아, 전형적인 스택 메모리 구조의 클래스를 제공합니다. Stack st = new Stack(); 더욱 복잡하고 빠른 스택을 구현하고 싶다면 Deque 인터페이스를 구현한 ArrayDeque 클래스를 사용하면 됩니다. Deque st = new ArrayDeque(); 단, ArrayDeque 클래스는 Stack 클래스와는 달리 search() 메소드는 지원하지 않습니다. Java SE 6부터 지원되는 ArrayDeque 클래스는 스택과 큐 메모리 구조를 모두 구현하는데 가장 적합한 클래스입니다. 위의 내용은 자바 도큐먼트 사이트에서 직접 명시된 내용입니다. 왜 이런 구조로 되어있는 것일까요?? 그에 대한 분석이 2013년에 Badd..
-
코딩테스트 고득점 kit / 스택&큐 / 프린터 / JAVA알고리즘/프로그래머스 2020. 4. 19. 15:57
문제 https://programmers.co.kr/learn/courses/30/lessons/42587 풀이방법1 - Queue 2개 사용 import java.util.Queue; import java.util.LinkedList; import java.util.Arrays; class Solution { public int solution(int[] priorities, int location) { int answer = 0; Queue indexQ = new LinkedList(); Queue valueQ = new LinkedList(); for(int i=0; i
-
코딩테스트 고득점 kit / 스택&큐 / 주식가격 / JAVA알고리즘/프로그래머스 2020. 4. 18. 23:40
문제 https://programmers.co.kr/learn/courses/30/lessons/42584 풀이방법 1 import java.util.ArrayDeque; import java.util.Deque; class Stock { private int index; private int stock; public int getIndex() { return index; } public void setIndex(int index) { this.index = index; } public int getStock() { return stock; } public void setStock(int stock) { this.stock = stock; } } class Solution { public int[] so..
-
코딩테스트 고득점 kit / 힙(Heap) / 이중우선순위큐 / JAVA알고리즘/프로그래머스 2020. 4. 17. 23:56
문제 설명 이중 우선순위 큐는 다음 연산을 할 수 있는 자료구조를 말합니다. 명령어수신 탑(높이) I 숫자 큐에 주어진 숫자를 삽입합니다. D 1 큐에서 최댓값을 삭제합니다. D -1 큐에서 최솟값을 삭제합니다. 이중 우선순위 큐가 할 연산 operations가 매개변수로 주어질 때, 모든 연산을 처리한 후 큐가 비어있으면 [0,0] 비어있지 않으면 [최댓값, 최솟값]을 return 하도록 solution 함수를 구현해주세요. 제한사항 operations는 길이가 1 이상 1,000,000 이하인 문자열 배열입니다. operations의 원소는 큐가 수행할 연산을 나타냅니다. 원소는 “명령어 데이터” 형식으로 주어집니다.- 최댓값/최솟값을 삭제하는 연산에서 최댓값/최솟값이 둘 이상인 경우, 하나만 삭제합..