📑 문제 🌱 아이디어입력된 숫자의 모든 경우의 조합 중 중복 제거 + 사전순 정렬! 이 문제를 풀 때 모든 경우의 수를 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을 통..
📑 문제 🌱 아이디어배열의 숫자가 시작되는 자리를 지정하고,오른쪽 상단 -> 오른쪽 하단, 오른쪽 하단 -> 왼쪽 하단, 왼쪽 하단 -> 왼쪽 상단, 왼쪽 상단 -> 오른쪽 상단으로 이동하는 규칙에 맞게 구현해 보자. 이 규칙을 찾는 건 크게 어렵지 않았다 다만 신경 써야 하는 부분은 한 칸씩 줄어들면서 탐색하는 범위를 지정하는부분이다. 여러 부분을 신경 써야 하니 코드에 주석을 달아놨으니 자세히 읽으면서 풀면 된다! 🌱 코드 및 풀이가장 처음 숫자는 배열의 0,0에서 시작한다. 줄어든 후는 1,1 그 후는 2,2 이렇게 배열중앙을 향해서 증가하는 모습을 볼 수 있다.maxN = 1이 될 때까지 반복하고 range를 통해 줄어든 범위까지 탐색할 수 있게 설정한다. 즉 우리는 가창 처음 숫자가 시작..
📑 문제🌱 아이디어1~9까지의 중복하지 않는 세 자리 숫자 조합, 즉 경우의 수가 적다 브루트포스로 풀어보자! 입력으로 예상 숫자를 주고 그 숫자가 얼마나 답에 근접했는지를 볼, 스트라이크로 알려준다 스트라이크 = 숫자자리, 숫자 모두 일치할 때볼 = 숫자가 포함만 되어있을 때 예를 들어 정답 "234" 에 대한 예상숫자 "241" 은 "1 스트라이크, 1 볼"이다. 그렇다면 답이 될 수 있는 모든 세 자릿수에 대한 힌트(스트라이크, 볼)가 입력받은 힌트와 일치한다면답이 될 수 있는 숫자이다! 이점을 이용해서 풀어보자!🌱 코드 및 풀이가장 처음에는 ArrayList에 중복이 없는 세 자릿수를 입력받고, 입력으로 예상 숫자와 힌트(볼, 스트라이크)가 들어올 때마다힌트에 부합하는 숫자라면 패스하고 부..
📑 문제 🌱 아이디어BFS(너비우선탐색) + 구역 카운팅 문제이다! ArrayList에 구역 범위를 담으면 된다. BFS 알고리즘 구현만 가능하다면 아주 쉽게 풀 수 있는 문제이다. 입력이 0, 1 단 두 개 이기 때문에 '1' 일 때만 인접해 있는 모든 '1' 을 탐색하고 범위를 카운팅해 ArrayList에 입력한다. 즉 ArrayList의 사이즈가 총 단지수이고, 저장된 요소를 오름차순으로 출력하면 된다! 아래 코드에 주석을 달아 놨으니 이해하는데 큰 어려움은 없을 것이다!🌱 코드 및 풀이기본적인 BFS 알고리즘이다. '1' 을 발견한다면 인접한 '1' 까지 전체 탐색하고 vi 배열을 통해 방문 처리를 해준다 ArrayList에 단지 수를 입력하고 ArrayList의 사이즈 = 총 단지수, A..