본문 바로가기

Study Algorithm

(13)
Sorting Algorithm (Bubble, Insertion, Selection, Shell, Quick, Merge Sort) 얼마 전, 스타트업 라이브코딩테스트에서 MergeSort에 대해 구현하는 문제를 풀게되었다. 기초적인 문제임에도 잘 풀지 못했기때문에 반성하는 마음...으로 Sort Algorithm들을 구현해보았다. 이해+구현을 목적으로 풀이한 것이라 코드가 조금 복잡할 수도 있다.. #1 BubbleSort (버블정렬) import java.util.Random; public class BubbleSort { static int cnt; public static void main(String[] args) { Random rand = new Random(); int[] num = new int[5]; for (int i = 0; i < num.length; i++) { num[i] = rand.nextInt(10);..
카카오 2021 신입 공채 순위 검색 문제풀이 Java 틀린코드 PowerSet(틀림) 과 DFS(맞음)로 info의 set들을 구한 것의 차이도 잘 모르겠고..... info의 HashMap을 나는 가지고 올때마다 Sorting해주려고 했는데, 한번에 해주는게 시간이 더 적게 걸렸다...왜지...? import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; public class kakao_2021_순위검색3 { static HashMap hm; static String[] lst; static int cnt; static int[] answer; public static void main(String[] args) {..
카카오 2020 여름 인턴십 보석 쇼핑 현재 풀이이다. 정확도는 맞는데 효율성 테스트는 죽어도 통과가 안된다.. 찾아보니 "슬라이딩 윈도우" 라는 알고리즘을 이용하여 풀어야한다고 한다. 조금 알아본 바로는 for문 2개가 아닌 이전 윈도우와 다음 윈도우의 중복은 그대로 사용하고 이전에서 다음으로 넘어오면서 이전에 사용했지만 다음에는 사용되지 않는것을 빼고 이전에는 사용하지 않았지만 다음에는 사용하는 것을 더하면서 알고리즘을 구성해야한다는 것 같다... import java.util.HashMap; import java.util.HashSet; public class kakao_2020_보석쇼핑 { public static void main(String[] args) { //String[] gems = { "DIA", "RUBY", "RUBY"..
백준_20055_컨베이어벨트위의로봇 소요시간 : 총 70분 문제유형 : 시뮬레이션 어렵지 않은 구현이다. 다만 문제, 예제가 조금 불친절해서 로봇을 올리고 내릴 때, 파악을 잘 해야한다... 이 부분을 파악 하느라 시간이 많이 소모되었다. HINT) 로봇은 N의 위치(문제 상 N) 에 가면 벨트 아래로 내려간다. 따라서, 벨트가 그냥 회전할 경우인 1번 // 로봇이 혼자 이동하는 경우인 2번에서 사건이 두번 발생한다. => 각각의 경우에 ..일단, 로봇을 다 움직이고 내리게끔 코드를 짜면 된다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public clas..
카카오 2019 겨울 인턴십_불량사용자_Java 문제풀이 1. go 메소드 (문자 비교과정) idx=0 즉, 단어 첫글자부터 서로 비교해갈 것이다. 여기서, 1. 제재ID가 "*"이 아님에도 유저ID와 글자가 다르면 즉시 비교과정을 중지한다. 2. 만약 "*"일 경우(비교하지않아도 되기에) 와 제재 ID와 유저ID 동일 위치의 글자가 같다면, idx를 하나 증가시키고 다음 위치의 글자를 비교하는 과정을 실행한다. 3. 만약 idx값이 글자 끝에 다다랐음에도 1번 조건문에 걸리지 않는다면, 제재대상인 ID이므로, flag변수를 false로 지정하고 비교과정을 끝낸다. public static void go(String ban, String user) { if (idx == ban.length()) { flag = false; return; } else if (b..
백준_11404_플로이드 (플로이드-워셜 알고리즘) for문 3개를 이용하여 푸는 그래프 관련 문제로 graph[시작][끝] = Math.min(graph[시작][끝], graph[시작][경유]+[경유][끝])이 핵심이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class boj_11404_플로이드 { public static void main(Stri..
백준_1753_최단경로 (다익스트라 알고리즘 (Dijkstra Algorithm)) 한 정점에서 다른 정점으로 가는 최단 경로를 찾는 알고리즘 참고했던 블로그 (가장 잘 정리된 블로그) 1번 풀이(시간초과) 백준 1753번 최단경로를 통해 해당 알고리즘을 학습했다. 직관적으로 이해하기 위해 해당 방법으로 인접행렬을 사용하여 문제를 풀었기에 메모리 초과가 발생한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 import java.util.Scanner; p..
백준_17140_2차원배열의연산 소요시간: 4시간.. 문제를 읽지 않은 덕에 정렬 기준을 세우지 않아 데이터를 담는 리스트타입을 재구성하고, 문제를 뒤집어 엎느라 시간이 많이 걸렸다. 정답율이 높아 만만히 도전한 문제였지만, 쉽지않았다. 어려운 기술이 요구되기보단 기초적으로 알고 있는 것을 얼마나 빠른시간내에 효율적으로 사용하는지에 대한 문제인것 같다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 7..