알고리즘
-
Switch 와 if문 중 어느게 더 성능이 좋을까?알고리즘 2020. 10. 14. 10:38
코드 인스펙션을 받던 도중 선임 연구원분이 if, else로 된 부분을 switch case 문으로 바꾸라고 하셨습니다. 그래서 문득 의문이 들었습니다. switch랑 if문은 실제로 성능 차이가 있는걸까?? kldp.org/node/62262 switch vs if 어떤 때 어느게 효율적인가요? | KLDP 저는 조건문이 4개 이하이면 그냥 if, else if 로 하고, 그 이상이면 switch case 문을 사용하고 있습니다. 그냥 짧은 것은 switch문 쓰면 너무 소스가 길어져서.. 그런데, 어떤게 어느때 사용해야 제대로 kldp.org 다음과 같은 사이트에서 해답을 찾을 수 있었습니다. 컴파일러가 최적화할때 switch가 더 유리하다는 답변을 확인했습니다. 많은 구현체들이 switch 문을 j..
-
[백준] 2959번 거북이 문제풀이알고리즘/Baekjoon 2020. 7. 18. 15:23
풀이 방법 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int[] arr = new int[4]; for(i..
-
코딩테스트 연습 / 연습문제 / 124 나라의 숫자 / JAVA알고리즘/프로그래머스 2020. 4. 23. 16:35
문제 풀이 class Solution { public String solution(int n) { String answer = ""; StringBuilder sb = new StringBuilder(); char[] num = {52,49,50}; //4,1,2 while(n > 0){ sb.insert(0,num[n%3]); n = (n - 1) / 3; } answer = String.valueOf(sb); return answer; } } 이 문제는 약간의 응용력이 들어간 문제이기 때문에 접근방법에 주의해야 합니다. 평소에 2진수 변환 같은 문제를 풀어보지 못한 사람은 잘 생각하지 않으면 어려울 수도 있는 문제입니다. 저 같은 경우에는 처음에 n을 log로 나누려고 했는데 Math.log3()이 ..
-
코딩테스트 고득점 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") 다음 두 코드 중 어느 게 더 빠를까요?? 전자는 컴파일하고 (상대적으로) 복잡한 정규 표현식을 반복하므로 단순히 일련의 문자를 찾는 후자가 조금 더 빠릅니다. 그러면 정규식을 안 쓰는 게 좋지 않는가?? 속도만을 생..
-
[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..