
DFS & BFS

88. Merge Sorted Array 두 배열을 하나로 합친 후 정렬하는 문제 문제 해석 매개변수로 들어오는 두 배열을 합칠 때 의미 없는 숫자인 0은 제외하고 합친다. 그 후 오름차순 정렬한다. 코드

27. Remove Element 문제 분석 배열과 정수가 주어질 때 해당 정수가 포함되지 않게 배열을 다시 재정의 하는 문제 풀이 과정 배열 반복문을 돌면서 매개변수로 주어진 정수와 같지 않다면 기존 배열에 추가한다. 추가와 동시에 카운트를 세준다. 카운트를 리턴하고 원본 배열도 수정되기 때문에 통과할 수 있다. 코드

26. Remove Duplicates from Sorted Array 문제 분석 주어진 배열에서 중복을 제거하는 문제 풀이 과정 리스트를 하나 선언한 다음, 배열 반복문을 돈다. 리스트에 배열의 값이 포함되어있지 않다면 리스트에 추가하고 배열을 업데이트 해준다. 마지막으로 리스트의 사이즈를 리턴한다. 코드

80. Remove Duplicates from Sorted Array II 문제 분석 주어진 배열의 중복을 최대 2개까지 허용하여 배열을 다시 재정의하는 문제 풀이 과정 리스트를 2개 선언한 후 값을 리스트에 하나씩 추가해준다. 첫번째 리스트와 두번째 리스트에 있는 값이라면 스킵한다. 첫번째 리스트에 있으면서 두번째 리스트에 없는 값이라면 두번째 ...

169. Majority Element 문제 분석 주어진 배열에서 가장 많이 등장하는 숫자를 리턴하는 문제 풀이 과정 배열을 정렬한 후 반복문을 돈다. 현재의 값과 다음의 값이 다르다면 반복문을 종료하고 그게 아니라면 카운트를 1 올려준다. 올려진 카운트는 정답에 업데이트해준다. 업데이트할 때는 기존의 값과 비교하여 더 큰 값으로 업데이트 해준다. ...

189. Rotate Array 문제 분석 주어진 배열을 k번만큼 순번을 바꾸는 문제 풀이 과정 주어진 배열의 값들을 덱에 담는다. 덱에 있는 숫자들을 k번만큼 뒤의 값을 앞으로 추가하여 순번을 바꿔준다. 덱에 있는 값들을 꺼내 배열을 업데이트해준다. 코드

121. Best Time to Buy and Sell Stock 문제 분석 가장 값이 적은 값과 많은 값의 차가 제일 큰 값을 구하는 문제 풀이 과정 min 값은 기존의 min값과 현재의 값 중 작은 값으로 업데이트 해준다. max 값은 기존의 max값과 (현재의 값 - min 값) 중 큰 값으로 업데이트 해준다. max 값을 반환한다. 코드

122. Best Time to Buy and Sell Stock II 문제 분석 가격이 높은날 - 가격이 적은날의 값을 누적하여 반환하는 문제 풀이 과정 주어진 배열을 반복문을 돈다. 구매가격 : 구매가격이 지금의 값보다 크다면 갱신 후 스킵한다. 이익 : 지금의 값이 구매가격보다 크다면 이익에 (현재가 - 구매가)를 추가해준다. 이익을 반환한다....

55. Jump Game 문제 분석 각 숫자들은 0 ~ n까지 다음 인덱스에 접근할 수 있다는 뜻이다. [2,3,1,1,4] 배열이 주어지면, 순서대로 2는 3, 1을 갈 수 있다. (2칸) 3은 3, 1, 1, 4를 갈 수 있다. (3칸) 1은 1, 1을 갈 수 있다. (1칸) 1은 1, 4를 갈 수 있다. (1칸) 이러한 규칙속에서 마지막 인덱스에 ...

125. Valid Palindrome 문제 분석 주어진 문자열을 기준으로 앞으로 읽어도, 뒤로 읽어도 똑같다면 true, 다르다면 false 를 리턴해라. (띄어쓰기, 쉼표, 콜론 등 무시!) 풀이 과정 투포인터로 접근하였다. 우선 문자열을 1차 가공을 한다. 문자열이 영어이거나 숫자라면 새로운 문자열에 소문자로 추가한다. 이때 공백, 쉼표, 콜론...

167. Two Sum II - Input Array Is Sorted 문제 분석 오름차순 정렬된 배열 하나와 target이 주어진다. 배열의 값들을 더해서 target을 구해야하는데 이 때 인덱스를 배열에 담아 리턴하면 된다. 풀이 과정 투포인터를 이용하여 문제를 해결한다. 배열이 정렬되어있기 때문에 두 값을 더한 결과가 크거나, 작거나, 같은 경...

209. Minimum Size Subarray Sum 문제 분석 배열 하나와 target이 주어진다. 배열안에 있는 값들을 더해서 target 이상의 값을 구한다. 이때 배열안에 있는 값들의 수가 가장 적은 값을 리턴한다. 풀이 과정 탐색을 위한 두 개의 인덱스를 둔다. (leftIndex, rightIndex) rightIndex가 0번 인덱스부...

3. Longest Substring Without Repeating Characters 문제 분석 주어진 문자열의 문자들을 순서대로 체크했을 때 문자들의 중복이 없게 가장 긴 길이를 리턴하라. 풀이 과정 문자를 체크하기 위해서 Set 자료구조를 활용하였다. 탐색을 위한 두 개의 인덱스를 선언한다. (leftIndex, rightIndex) righ...

35. Search Insert Position 문제 분석 배열과 정수 하나가 주어진다. 배열에 정수가 있다면 해당 인덱스를 리턴, 없다면 알맞는 위치에 해당하는 인덱스를 리턴하는 문제. 풀이 과정 주어진 배열은 정렬이 되어있으므로 이분 탐색을 활용하여 값을 절반씩 찾아나간다. 총 3개의 인덱스를 선언한다(startIndex, endIndex, mi...

74. Search a 2D Matrix 문제 분석 주어진 2차원 배열은 0부터 마지막 값까지 순서대로 정렬되어 있고 해당 2차원 배열안에 target이 포함되어있다면 true, 아니면 false를 리턴하는 문제 풀이 과정 2차원 배열 안에 1차원 배열을 탐색할 이분 탐색 반복문 1차원 배열 안에 값을 탐색할 이분 탐색 반복문 1번 반복문 안에 2...

141. Linked List Cycle 문제 분석 링크드 리스트의 헤드가 주어질 때 이 링크드 리스트가 순환한다면 true, 아니라면 false를 리턴하라 풀이 과정 단일 연결 링크드 리스트는 노드가 다음 노드만 가리킬 뿐 누가 나를 가리키는 지 알 수 없다. 해당 조건에서 순환을 하는지 찾는 문제이다. 여기서 말하는 순환의 이해를 n번 노드 이...

2. Add Two Numbers # 문제 분석 두 개의 링크드 리스트가 주어지고 순서대로 더해서 리턴하는 문제. 노드의 값은 0~9고 두 노드를 더해서 10이 넘어가면 다음 덧셈에 값을 올려주어야 한다. # 풀이 과정 결과를 리턴할 ListNode result; 를 하나 선언한다. 반복문을 돌면서 노드를 덮어씌우기 때문에 원본을 그대로 사용하면 안...

155. Min Stack 문제 분석 현재 스택에 최솟값을 가지고 있는 스택 자료구조를 구현하는 문제 풀이 과정 최솟값의 기준은 현재 스택에 있는 값들을 기준으로 한다. 즉 pop() 을 통해 값이 빠져나갈 때를 생각해야 한다. push() 를 통해 스택에 값을 저장할 때 마다 조건문으로 최솟값을 확인한다. 이때 최솟값이 갱신되면 현재 최솟값과 이...

150. Evaluate Reverse Polish Notation 문제 분석 주어지는 문자열 배열에 사칙연산과 숫자가 있다. 사칙연산이 등장하는 시점으로부터 앞의 2개의 숫자를 우선순위로 계산하여 정답을 리턴하는 문제 풀이 과정 문제 분석에서 이미 스택을 이용한 풀이를 유추할 수 있다. 사칙연산("+", "-", "/", "*") 이 등장하는 시...

1. Two Sum 문제 분석 하나의 정수 배열과 하나의 정수가 주어지나. 해쉬맵(해쉬테이블)을 이용하여 배열의 값을 계산하고 그 결과가 정수인 값들의 인덱스를 구하는 문제. 풀이 과정 nums 정수 배열이 주어진다. target 정수가 주어진다. 만약 nums[i] + nums[j] == target 이라면 [i], [j] 를 배열에 담아 리턴...

219. Contains Duplicate II 문제 분석 nums 배열이 주어진다. k 정수가 주어진다. 만약 nums[i] == nums[j] 라면 Math.abs(i - j) 의 값이 k 보다 이하여야 한다. 해당 결과의 절대값이 정수보다 이하라면 true, 아니면 false를 리턴하는 문제. 풀이 과정 nums 배열의 값들을 반복문을 통해...

383. Ransom Note 문제 분석 두 개의 문자열이 주어진다. String ransomNote, String magazine String magazine 의 문자를 가지고서 String ransomNote 를 만들 수 있다면 true 아니면 false 를 리턴하는 문제 풀이 과정 HashMap 을 하나 선언한다. String ransomN...

242. Valid Anagram 문제 분석 두 개의 문자열이 주어진다. String s , String t String t 를 재배열하여 String s 를 만들 수 있다면 true, 아니면 false 를 리턴하는 문제 풀이 과정 HashMap 을 선언한다. String s 해당 문자열을 charAt() 을 통해 문자를 추출하여 HashMap ...

162. Find Peak Element 문제 분석 정수 배열이 하나 주어진다. Peak 이란 아래의 조건을 충족해야 한다. nums[n] > nums[n-1] nums[n] < nums[n+1] 해당 조건이 충족하는 숫자의 인덱스 n 을 리턴하는 문제. 풀이 과정 정답이 되기 위한 조건은 아래와 같다. nums[n] 은 nums[n - 1] 과...

153. Find Minimum in Rotated Sorted Array 문제 분석 이미 정렬되어 있는 배열이 특정 횟수 만큼 회전되어 주어질 때 최솟값을 찾는 문제 풀이 과정 예제를 기준으로 이분 탐색 로직을 설명한다. 원래 배열은 정렬된 배열이다. 원래 배열 nums = [0, 1, 2, 4, 5, 6, 7] 1회전 nums ...

33. Search in Rotated Sorted Array 문제 분석 정렬된 배열이 특정 횟수 회전되어 주어진다. 정수 하나가 주어진다. 정렬된 배열에 정수가 존재하면 인덱스를 리턴, 없다면 -1을 리턴 풀이 과정 이분 탐색을 응용하는 문제. 원래 배열 nums = [0, 1, 2, 4, 5, 6, 7] 1회전된 배열 = [1,...

530. Minimum Absolute Difference in BST 문제 분석 BST(이진 검색 트리)의 루트가 주어지면 트리에 있는 두 개의 다른 노드 값 간의 최소 절대 차이를 반환합니다. 풀이 과정 2개의 노드를 구한 후 두 노드의 차이의 절댓값을 구한다. 재귀 함수를 사용하기 때문에 필드에 2개의 값을 선언한다. 하나는 결과값을 리턴할 ...

230. Kth Smallest Element in a BST 문제 분석 이진 검색 트리의 루트와 정수 k가 주어지면 트리에 있는 모든 노드 값 중 k번째로 작은 값(1-인덱스)을 반환합니다. 풀이 과정 이진 트리는 값(node)을 추가할 때 node 를 기준으로 값이 크다면 left 작다면 right 에 추가한다. node 는 최대 2개의 자식 n...

199. Binary Tree Right Side View 문제 분석 이진 트리의 루트가 주어지면 자신이 그 오른쪽에 서 있다고 상상하고 위에서 아래로 정렬된 노드 값을 반환합니다. 풀이 과정 depth 가 같은 node 는 마지막에 추가된 node 가 우측에서 볼 수 있는 node 가 된다. > 아래와 같은 트리가 있다고 가정한다. > input...

637. Average of Levels in Binary Tree 문제 분석 이진 트리의 루트가 주어지면 각 수준의 노드 평균값을 배열 형식으로 반환합니다. 풀이 과정 여기서 말하는 수준은 level 이다. 같은 계층의 값들의 평균을 구하는 문제. > 아래와 같은 트리가 있다고 가정한다. input = [15, 7, 40, 1, 10, 34, 4...

208. Implement Trie (Prefix Tree) 문제 분석 Trie() 클래스를 구현하는 문제 풀이 과정 Trie() - 겍체 초기화 insert(String word) - 문자열 추가 search(String word) - 해당 문자열이 Trie에 존재하면 True, 아니면 false startsWith(String prefix) - ...

211. Design Add and Search Words Data Structure 문제 분석 새로운 단어를 추가하고 문자열이 이전에 추가된 문자열과 일치하는지 찾는 것을 지원하는 데이터 구조를 설계합니다. (trie) 풀이 과정 이전 Trie 자료 구조 구현과 비슷한 문제다. >Trie는 트리의 일종인 문자열의 키를 효율적으로 저장하고 검색할 ...

215. Kth Largest Element in an Array 문제 분석 정수 배열과 정수 k 가 하나 주어졌을 때 k 번째로 큰 요소를 반환하는 문제. 단, 정렬을 이용하지 않고 해결해야 한다. 풀이 과정 자바에서 Heap 을 구현한 데이터 구조 중 하나인 우선순위 큐 를 이용하여 접근하였다. 요소들을 저장하고 우선순위에 따라 요소들을 추출할 ...

212. Word Search II 문제 분석 2차원 문자 배열과 문자열 배열 하나가 주어진다. 문자열 배열에 있는 단어가 2차원 문자 배열에 존재한다면 그 값을 List 에 추가하여 리턴하는 문제 (2차원 문자 배열의 문자는 재사용할 수 없고 상,하,좌,우로만 이동이 가능하다.) 풀이 과정 효과적인 탐색을 위해 Trie + DFS 로 접근하였다. ...

373. Find K Pairs with Smallest Sums 문제 분석 정수 배열 2개가 주어진다. 2개의 배열의 값들을 더하여 나올 수 있는 경우의 수 중 가장 작은 값을 순서대로 k 번까지 리턴하는 문제 풀이 과정 2개의 정수 배열에서 값을 꺼낸 합을 PriorityQueue 에 담는다. 알아서 정렬이 될테고 k 번 만큼 poll() 하여 ...

909. Snakes and Ladders 문제 분석 2차원 배열이 주어진다. -1 은 다른 위치로 이동하지 않는다는 뜻. 그 외에 값들은 다른 위치로 이동한다는 뜻이다. 예제를 기준으로 보자면, 첫 행부터 맨 위의 숫자들을 나타낸다. (0 == 36) 2번 은 15번 으로 이동이 가능하다. (사다리) 14번 은 35번 으로 이동이 가능하다. (사다...

[9019] DSLR 문제 분석 네 개의 명령어 D, S, L, R 을 활용하여 주어진 숫자 를 target 숫자 로 바꿀 때 최소 명령어를 출력하는 문제. 정답이 여러개인 경우 아무거나 출력하면 된다. 풀이 과정 네 개의 명령어는 다음과 같은 코드로 바꿀 수 있다. D : n을 두 배로 바꾼다. 결과 값이 9999 보다 큰 경우에는 10000 으...

[1107] 리모컨 문제 분석 요약해보자면....... 채널 이 주어진다. +, - 버튼으로 채널을 ±1 할 수 있다. 0 ~ 9 버튼 중 고장 난 버튼 이 주어진다. 몇 번만에 해당 채널 을 찾을 수 있는지 최솟값을 리턴하라. 시작 채널 은 100 번이다. 고장나지 않은 버튼이 주어질 수 있다. 이동하기 위한 채널은 `0 🎯 +, - 버튼으...

[16928] 뱀과 사다리 게임 문제 분석 2차원 배열이 주어진다. 1번 ~ 100번 까지 있다. (10x10) 주사위를 굴려 선택적으로 이동할 수 있다. 최소 1칸 ~ 최대 6칸 뱀과 사다리가 주어진다. 뱀은 윗칸에서 아랫칸으로 내려간다. (ex_ 23 -> 11 , 23번 에 도착하면 11번 으로 내려간다.) 사다리는 아랫칸에서 윗칸으로 올라간다....

[20529] 가장 가까운 세 사람의 심리적 거리 문제 분석 총 16가지의 MBTI 가 있다. 해당 MBTI 로 심리적인 거리를 측정할 수 있다. E or I 같으면 거리는 +0, 다르면 거리는 +1 S or N 같으면 거리는 +0, 다르면 거리는 +1 T or F 같으면 거리는 +0, 다르면 거리는 +1 J or P 같으면 거리는 +0, 다르면 거리...

[18110] solved.ac 문제 분석 예제 1로 분석한다. >5 🎯 배열에

[백준] 10986 나머지 합

백트래킹

문자열 가공

그리디

스택