📑 문제 🌱 아이디어입력된 숫자의 모든 경우의 조합 중 중복 제거 + 사전순 정렬! 이 문제를 풀 때 모든 경우의 수를 HashSet에 넣고 정렬을 한다면 중복제거 + 사전순 출력으로 될 줄 알았다. 일단 필자는 문자열로 처리했고 문자열 정렬을 했다 하지만 제대로 정렬되지 않았다. 숫자를 문자열로 입력받고 Arrays.sort를 하면 제대로 정렬되지 않는다.그 이유는 "숫자의 사전순 정렬"과 "문자열의 사전순 정렬"의 개념이 다르다, 필자는 제대로 몰랐다.;; 입력값 = 100, 20 오름차순 정렬 시 숫자의 사전순 정렬 은 20 임으로 출력은 20 100이다.문자열의 사전순 정렬 은 20의 "2" 보다 100의 "1"이 사전 순으로 먼저이다. 즉 숫자 자체는 100이 크지만문자열 정렬 시 우선..
📑 문제 🌱 아이디어수열의 오른쪽 끝에서 왼쪽으로 탐색하면서 두 수를 비교하면서 스택에 push, pop을 한다! 이 문제를 풀기 위해서 공식을 총 2가지로 단순화했다 1. 왼쪽 숫자보다 오른쪽 숫자가 크다면 -> 스택에 push2. 왼쪽 숫자보다 오른쪽 숫자가 작다면 -> 스택에 pop 하지만 출력조건은 레이저를 수신한 탑의 인덱스를 출력하기 때문에 스택에는 인덱스 번호에 해당하는 숫자가 아닌숫자에 해당하는 인덱스 번호를 입력한다. 즉 arr1 [i]가 아니라 'i'를 스택에 입력을 해야 한다.🌱 코드 및 풀이1. 왼쪽 숫자보다 오른쪽 숫자가 크다면 -> 스택에 push stk.push(i)를 통해 인덱스 번호 입력2. 왼쪽 숫자보다 오른쪽 숫자가 작다면 -> 스택에 pop while을 통..
📑 문제🌱 아이디어1~9까지의 중복하지 않는 세 자리 숫자 조합, 즉 경우의 수가 적다 브루트포스로 풀어보자! 입력으로 예상 숫자를 주고 그 숫자가 얼마나 답에 근접했는지를 볼, 스트라이크로 알려준다 스트라이크 = 숫자자리, 숫자 모두 일치할 때볼 = 숫자가 포함만 되어있을 때 예를 들어 정답 "234" 에 대한 예상숫자 "241" 은 "1 스트라이크, 1 볼"이다. 그렇다면 답이 될 수 있는 모든 세 자릿수에 대한 힌트(스트라이크, 볼)가 입력받은 힌트와 일치한다면답이 될 수 있는 숫자이다! 이점을 이용해서 풀어보자!🌱 코드 및 풀이가장 처음에는 ArrayList에 중복이 없는 세 자릿수를 입력받고, 입력으로 예상 숫자와 힌트(볼, 스트라이크)가 들어올 때마다힌트에 부합하는 숫자라면 패스하고 부..
📑 문제 🌱 아이디어BFS(너비우선탐색) + 구역 카운팅 문제이다! ArrayList에 구역 범위를 담으면 된다. BFS 알고리즘 구현만 가능하다면 아주 쉽게 풀 수 있는 문제이다. 입력이 0, 1 단 두 개 이기 때문에 '1' 일 때만 인접해 있는 모든 '1' 을 탐색하고 범위를 카운팅해 ArrayList에 입력한다. 즉 ArrayList의 사이즈가 총 단지수이고, 저장된 요소를 오름차순으로 출력하면 된다! 아래 코드에 주석을 달아 놨으니 이해하는데 큰 어려움은 없을 것이다!🌱 코드 및 풀이기본적인 BFS 알고리즘이다. '1' 을 발견한다면 인접한 '1' 까지 전체 탐색하고 vi 배열을 통해 방문 처리를 해준다 ArrayList에 단지 수를 입력하고 ArrayList의 사이즈 = 총 단지수, A..
📑 문제🌱 아이디어주사위 전개도를 배열로 구현해서 각 자리마다 주사위 면을 할당해 준다! 주사위 굴리기 문제는 전개도를 친절히 제공해 준다. 필자는 전개도를 보고 더 헷갈렸었다. 2차원 배열로 구현을 해야 하나..가로, 세로 배열을 만들어야 하나... 사실 잘 못 접근했고, 배열 하나 만들고 해당 배열마다. 주사위 면(위, 바닥, 앞, 뒤. 왼, 오)의역할을 할당해서 문제를 접근하는 게 좋은 방법인 것 같다. 아래 코드에서 함수의 역할을 천천히 생각해 보면서 읽어본다면 이해하기 쉬울 것이다.🌱 코드 및 풀이dx, dy 배열을 통해 주사위의 움직임 (동, 서, 남, 북) 을 구현하고, 입력에 맞게 이동한다. // 위, 바닥, 앞, 뒤, 왼, 오 public static int[] dice =..