문제 문제 풀이 카운트 변수를 하나 선언을 하고 카운트가 0일 때 문자열을 기준값으로 초기화 시킨다. 같은 문자일 때는 카운팅 되는 값을 +1, 아닐때는 -1 하는 방식으로 하여 처리하였음. 나의 답안 public static int solution(String s) { int answer = 0; int count = 0; char first = s.charAt(0); for (char c : s.toCharArray()){ if (count == 0) first = c; if (first == c) count++; else count--; if (count == 0) answer++; } if (answer > 0) answer++; return answer; }
문제 문제 풀이 해당 문제에서 가장 이해하기 어려웠던건 단순 board의 순서이다. 2차배열로 5개로 주어지는데 낮은 수가 당연히 아래에 쌓일 것이라고 생각하고 접근했는데 결과가 나오지 않아 다시 확인해보니 내림차순으로 불러와야 제대로 문제를 풀 수 있었다. int[][] board = {{0, 0, 0, 0, 0}, {0, 0, 1, 0, 3}, {0, 2, 5, 0, 1}, {4, 2, 4, 4, 2}, {3, 5, 1, 3, 1}}; {3, 5, 1, 3, 1} {4, 2, 4, 4, 2} {0, 2, 5, 0, 1} {0, 0, 1, 0, 3} {0, 0, 0, 0, 0} board를 제대로 정리 했을 시 위와 같은 모습으로 쌓이게 된다 거기서 basket에 담아주면서 상단에있는 값과 같을 때 사..
문제 문제 풀이 해당 문제에서 가장 고민해야 하는 부분은 2, 5, 8, 0 을 입력할 때 어떻게 그 값과 가까운 위치의 손을 불러오는가 이다. 가운데 값보다 작은 값에 손이 있으면 나누기를 통해 위치를 추적하고, 가운데 값보다 높은 값에 손이 있으면 나머지 값을 통해 계산이 가능하다. int leftHand = Math.abs(i - left) / 3 + Math.abs(i - left) % 3; int rightHand = Math.abs(i - right) / 3 + Math.abs(i - right) % 3; 나의 풀이 public static String solution(int[] numbers, String hand) { StringBuilder sb = new StringBuilder(); ..
문제 문제 풀이 아기가 할 수 있는 말은 아래와 같다. String[] joka = {"aya", "ye", "woo", "ma"}; 그리고 중복된 말은 하지 못하니 연속으로 할 수 있는 말을 필터링 할 수 있는 값을 지정한다. for (String ban : joka) { String sumBan = ban + ban; str = str.replaceAll(sumBan, "X"); } 그렇게 한번 걸러진 내용에서 아기가 할 수 있는 말만 변환을 시킨다. for (String bab : joka) { str = str.replaceAll(bab, "O"); } 마지막으로 해당 값에서 O이외 다른 값이 있으면 다음으로 넘어가게 한다. boolean check = true; for (int i = 0; i ..
문제 문제 풀이 3개의 큐 자료구조를 만들어서 각 큐의 peek의 값을 비교하여 같은 값이 있을 때 계속 반복문이 수행 되도록 함. 같은 값이 없을 때 No를 출력. 나의 답안 public static String solution(String[] cards1, String[] cards2, String[] goal) { String answer = "Yes"; Queue queue1 = new ArrayDeque(List.of(cards1)); Queue queue2 = new ArrayDeque(List.of(cards2)); Queue queue3 = new ArrayDeque(List.of(goal)); for (int i = 0; i < goal.length; i++) { if (queue3.pe..
문제 문제 풀이 배열 값으로 10000개가 들어오는 문제로 On^2 을 사용하면 효율 테스트에서 떨어진다. 최대한 hash 자료구조를 사용하여 시간 복잡도를 줄여내야 하는 문제이다. 참여자를 HashMap에 담아주고 completion 에서 해당 주소에 맞는 값들이 있으면 카운팅을 줄여주는 문제로 접근. 나의 답안 public static String solution(String[] participant, String[] completion) { String answer = ""; HashMap hm = new HashMap(); for (String str : participant) { hm.put(str, hm.getOrDefault(str, 0) + 1); } for (String str : com..