문제 문제 풀이 스택 자료구조를 이용하여 number에 있는 값을 순서대로 입력한다. 이전 입력된 문자가 현재 입력되는 문자보다 작은 경우 스택에서 빼주고 k값을 -1 해준다. 그렇게 다 돌고 나면 나오는 결과에서 아직 k가 1 이상인 경우 현재 스택에서 먼저 나오는 값들을 k가 0이 될 때 까지 빼준다. 스택에 남아 있는 값들을 StringBuilder를 통해서 문자열로 결합하고 reverse후 String으로 반환해준다. 나의 답안 public static String solution(String number, int k) { Stack deque = new Stack(); StringBuilder sb = new StringBuilder(); char[] chars = number.toCharArr..
문제 문제 풀이 입력되는 문자열에 따라 길이가 1 ~ 문자열 길이까지안에서 가능한 모든 숫자를 만들어서 중복은 빼고 나온 수들 중에, 소수를 찾아야 하는 문제이다. 순열로 만들어지는 숫자들 규칙으로 visited 불리안 배열을 하고 방문할 때는 방문여부를 true로 변환하고 추가되는 문자에 문자를 추가한다. 나올 때는 문자를 제거하고 방문여부를 false로 변경하면 순열로 나올 수 있는 모든 경우의 수를 체크 할 수있다. 그리고 각 길이마다 순열을 체크해야하기 때문에 solution에서 호출 하면서 최대 길이 값도 for문으로 같이 지정을 하여 넘겨주었음. 나의 답안 static ArrayList all = new ArrayList(); static boolean[] visited = new boolea..
문제 문제 풀이 해당 문제를 dfs 이용한 완전 검색을 하였다. 매 dfs 호출 마다 입력되는 문자열을 list에 담게 함으로써 A, AA, AAA, AAAA, AAAAA 까지 가는동안의 모든 문자열을 저장할 수 있음. 그리고 AAAAA 이후 AAAAE 가 나오는 순서를 보고 이중 for문을 사용해야 겠다고 생각하여 호출쪽에 for문 한개와 dfs 안쪽에 for을 두어 처리 하였음. 다른 분들의 답안도 많고 짧은데 뭔말인지 이해가 안되는게 많아서 따로 공부하지 않았음. 나의 답안 public static int solution(String word) { int answer = 0; ArrayList dic = new ArrayList(); String[] mother = {"A", "E", "I", "O..
문제 문제 풀이 처음에는 예시를 보고 같은 열에 있지 않고 높은 수만 골라서 가면 되지 않나 싶어서 2중 배열로 맥스값을 찾으면 넘어 가는 방식으로 처리 했다가 테스트에서 모두 틀리는 현상을 얻어 맞았다. 문제를 잘 못 이해 한 듯 해서 질문게시판으로 가니 역시나 문제 자체를 잘 못 이해하고 있었다. 아래 2행짜리가 있다고 보자. 여기서 어떤 방법이 가장 높은 점수를 얻는 루트인가 보면 4 -> 20을 밟았을때가 최고점이다. {1, 2, 3, 4, 5} {1, 1, 1, 1, 20} 이러한 방식으로 dp 로 처리한 문제이다. 나의 답안 int[][] dp = new int[land.length][land[0].length]; dp[0] = land[0].clone(); for (int i = 1; i <..
문제 문제 풀이 해당 문제는 문제 풀이를 하기보다는 문제자체가 뭐라고 하는지 이해가 안되는 문제이다. 현재 인덱스 보다 크거나 같은 값이 앞에 연속적으로 몇 개가 있냐를 따지는 문제이며, 중간에 작아지는 부분이 있다면, 마지막으로 +1을 더 해주면 되는 문제이다. 이 문제는 2단계에 있을 문제는 아닌 듯 하다. 나의 답안 public static int[] solution(int[] prices) { int[] answer = new int[prices.length]; for (int i = 0; i < prices.length - 1; i++) { for (int j = i + 1; j < prices.length; j++) { if (prices[i]
문제 문제 풀이 세션을 관리하 듯이 하는 문제라서 생각보다 접근하기는 쉬었다. 일단 map을 두개를 이용해서 id 하나의 공통된 String key 값을 주고 한쪽은 enter와 leave를 관리하고 한쪽은 change에 따른 닉네임만 관리 해주면 되는 문제이다. 나의 답안 public static String[] solution(String[] record) { ArrayList answer = new ArrayList(); Map user = new HashMap(); LinkedList chat = new LinkedList(); for (int i = 0; i < record.length; i++) { String[] s = record[i].split(" "); HashMap log = new ..