문제 문제풀이 카카오 문제인데 시물레이션 문제를 내면 엄청나게 시간을 많이 잡아 먹힌다. 일단 차량의 IN과 OUT에 따라 맵에 들어있는 시간을 빼주고 더해줘야 한다. 그렇게 다 정리가 되면 아직 출차 되지 않은 차량은 23:59 분 기준으로 또 값을 변경해줘야 한다. 이후 들어 있는 시간으로 기본시간을 초과한 경우 기본값 + 추가요금을 내게 하고 기본시간을 초과하지 못한 경우 기본 값만 내게 계산을 해서 배열에 담은 후 반환해주면 된다. 나의 답안 public static int[] solution(int[] fees, String[] records) { ArrayList answer = new ArrayList(); LinkedList parking = new LinkedList(); Map cars..
문제 문제풀이 result 값의 길이를 t 만큼 만들려고 할 때, 현재 문자열의 길이가 p 순서의 번호보다 작은 것만 고려를 한다면 어렵지 않게 풀 수 있는 문제이다. 나의 답안 public static String solution(int n, int t, int m, int p) { String game = " " + Integer.toString(0, n); String answer = ""; int time = p; int num = 1; while (answer.length() = game.length()) { game += Integer.toString(num, n); num++; } else { answer += game.charAt(time) + ""; time..
문제 문제 풀이 1씩 증가하는 반복문에 + 1~10 까지 증가하는 두개의 반복문으로 매일 진행되는 할인행사물품의 수를 계산하고, 그 계산된 값과 구매하기 원하는 물품의 개수를 비교하였을 때 할인 되는 제품이 더 많이 남아 있는 경우의 날만 계산하여 카운팅하고 반환하는 문제이다. 나의 답안 public static int solution(String[] want, int[] number, String[] discount) { int answer = 0; Map wantMap = new HashMap(); for (int i = 0; i < want.length; i++) { wantMap.put(want[i], number[i]); } for (int i = 0; i discCount){ flag= fal..
문제 문제 풀이 visited 배열을 통해 방문하지 않은 노드를 방문을 하여 피로도를 차감 시키는 dfs 방식으로 처리 하였다. 완전 검색트리를 활용하여야 하기 때문에 다음 재귀함수를 호출하고 나면 다시 visited를 false 처리를 하면서 다음번에 해당 던전을 체크가 가능하다. 나의 답안 static boolean[] visited; static int answer = 0; public static int solution(int k, int[][] dungeons) { visited = new boolean[dungeons.length]; dfs(0, k, dungeons); return answer; } private static void dfs(int depth, int k, int[][] du..
문제 문제 풀이 n 값을 k진수로 변환했을 때 진수값에서 0기준으로 문자열을 나누고 나온 배열 값을 하나씩 비교했을 때 소수의 갯수를 세어서 반환해주면 되는 문제이다. 나의 답안 public static int solution(int n, int k) { int answer = 0; String[] split = Integer.toString(n, k).split("0"); for(String str : split){ if ("".equals(str) || "1".equals(str)) continue; long num = Long.parseLong(str); boolean flag = true; for (long i = 2; i
문제 문제 풀이 문자열을 sort 함수를 사용시, 우선순위가 빠른 것 순으로 나열이 되는데, 문자열의 길이와 상관없이 정렬이 되기 때문에 쉽게 접두어를 찾을 수 있다. String 클래스의 startWith() 함수를 사용하였음. 나의 답안 public static boolean solution(String[] phone_book) { boolean answer = true; Arrays.sort(phone_book); for (int i = 0; i < phone_book.length -1; i++) { if (phone_book[i+1].startsWith(phone_book[i])) return false; } return answer; }