πŸ‘¨πŸ»‍πŸ’» PS/LeetCode 150

    [Java] 909. Snakes and Ladders

    문제 νŒŒμ•… Boustrophedon μŠ€νƒ€μΌμ˜ n*n λ³΄λ“œκ°€ 주어진닀. ( (n-1,0) μ’Œν‘œμ—μ„œ μ‹œμž‘ν•œλ‹€. ) μ£Όμ‚¬μœ„μ— 따라 μ΅œλŒ€ 6칸을 이동할 수 μžˆλ‹€. λ§Œμ•½ λ±€μ΄λ‚˜ 사닀리λ₯Ό λ§Œλ‚˜λ©΄ λ±€μ΄λ‚˜ 사닀리λ₯Ό μ΄μš©ν•΄μ•Όν•œλ‹€. n^2 칸에 λ„λ‹¬ν–ˆμ„ λ•Œ, κ²Œμž„μ€ λλ‚œλ‹€. λ³΄λ“œ 값이 -1이 μ•„λ‹Œ 경우 λ±€μ΄λ‚˜ 사닀리가 μ‘΄μž¬ν•œλ‹€. λ±€μ΄λ‚˜ 사닀리인 경우 λ„μ°©ν•˜λŠ” λ³΄λ“œ 값이 κΈ°λ‘λ˜μ–΄μžˆλ‹€. λ±€μ΄λ‚˜ μ‚¬λ‹€λ¦¬λŠ” 1 λ˜λŠ” n^2 칸에 μ‘΄μž¬ν•˜μ§€ μ•Šκ³  μ—°μ†μœΌλ‘œ 이동할 수 μ—†λ‹€. n^2에 λ„λ‹¬ν•˜κΈ° μœ„ν•œ μ΅œμ†Œ 이동 횟수λ₯Ό λ°˜ν™˜ν•˜κ³ , λ„λ‹¬ν•˜μ§€ λͺ»ν•˜λ©΄ -1을 λ°˜ν™˜ν•œλ‹€. 풀이 1️⃣ 1차원 맡과 bfs λ₯Ό μ΄μš©ν•œ 방법 πŸ’‘ λ– μ˜€λ₯Έ Idea λ¨Όμ €, λ³΄λ“œνŒ μˆœμ„œκ°€ ν—·κ°ˆλ €μ„œ 이λ₯Ό 1차원 맡으둜 λ°”κΏ”μ„œ ν•΄κ²°ν•˜λ©΄ 간단할것이라 생각이 λ“€μ—ˆλ‹€. λ”°λΌμ„œ, 제일 μ•„..

    [Java] 133. Clone Graph

    문제 νŒŒμ•… λ…Έλ“œλ‘œ μ—°κ²°λœ κ·Έλž˜ν”„κ°€ 주어지고, ν•΄λ‹Ή κ·Έλž˜ν”„λ₯Ό κΉŠμ€ λ³΅μ‚¬ν•΄μ„œ λ°˜ν™˜ν•΄μ•Όν•œλ‹€. 풀이 1️⃣ bfs λ₯Ό μ΄μš©ν•œ 풀이 πŸ’‘ λ– μ˜€λ₯Έ Idea κΉŠμ€ 볡사λ₯Ό ν•˜κΈ° μœ„ν•΄μ„œλŠ” 어쩃든, λͺ¨λ“  λ…Έλ“œμ— 방문해보고 ν•΄λ‹Ή 값을 κ°–λŠ” μƒˆλ‘œμš΄ λ…Έλ“œλ₯Ό μƒμ„±ν•΄μ•Όν•œλ‹€. λ¬Έμ œμ—μ„œ val 값은 unique ν•˜λ‹€κ³  ν–ˆμœΌλ―€λ‘œ map에 val 을 ν‚€κ°’μœΌλ‘œ ν•΄μ„œ λ…Έλ“œλ₯Ό μ°Έμ‘°ν•΄μ€€λ‹€. 첫번째 λ…Έλ“œλΆ€ν„° 이웃 λ…Έλ“œλ“€μ— 방문해보고, map에 λ“€μ–΄μžˆμ§€ μ•Šμ€(아직 λ°©λ¬Έν•˜μ§€ μ•Šμ€) λ…Έλ“œλ“€μ€ 큐에 집어넣어 이웃 λ…Έλ“œλ“€μ— λ°©λ¬Έν•˜κΈ°λ₯Ό λ°˜λ³΅ν•œλ‹€. λ§Œμ•½ map에 λ“€μ–΄μžˆλŠ”(λ°©λ¬Έν–ˆλ˜) λ…Έλ“œλΌλ©΄ 큐에 넣지 μ•Šκ³  μ΄μ›ƒμœΌλ‘œμ„œ μΆ”κ°€λ§Œ ν•΄μ€€λ‹€. class Solution { Map map = new HashMap(); Queue q = new LinkedList(); pu..

    [Java] 373. Find K Pairs with Smallest Sums

    문제 νŒŒμ•… λΉ„ λ‚΄λ¦Όμ°¨μˆœμΈ 두 μ •μˆ˜ λ°°μ—΄ nums1 κ³Ό nums2 그리고 kκ°€ 주어진닀. k개의 κ°€μž₯ 합이 μž‘μ€ pair λ₯Ό λ°˜ν™˜ν•΄μ•Όν•œλ‹€. 풀이 1️⃣ PriortyQueue 와 μΌμ’…μ˜ 그리디 법을 ν™œμš© πŸ’‘ μ°Έκ³ ν•œ Idea 이번 λ¬Έμ œλŠ”, 아무리 μ—΄μ‹¬νžˆ λ– μ˜¬λ €λ΄λ„ μ‹œκ°„ 초과 & λ©”λͺ¨λ¦¬ 초과 λ•Œλ¬Έμ— ν•΄κ²°ν•˜μ§€ λͺ»ν•˜κ³  λ‹€λ₯Έ μ‚¬λžŒμ˜ 아이디어λ₯Ό μ°Έκ³ ν•˜μ—¬ ν•΄κ²°ν•˜μ˜€λ‹€. 핡심 μ•„μ΄λ””μ–΄λŠ” λ‹€μŒκ³Ό κ°™λ‹€. λ¨Όμ €, 두 μ›μ†Œμ˜ 합을 κΈ°μ€€μœΌλ‘œ μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•˜λŠ” μš°μ„ μˆœμœ„ 큐λ₯Ό μ€€λΉ„ν•œλ‹€. nums1 λ°°μ—΄μ˜ μΈλ±μŠ€λŠ” 0 으둜 κ³ μ •ν•œ 채, nums2 배열을 μˆœνšŒν•˜λ©° 합을 κ΅¬ν•˜κ³  μš°μ„ μˆœμœ„ 큐에 μž…λ ₯ν•œλ‹€. μš°μ„ μˆœμœ„ νμ—λŠ” [ nums1의 κ°’, nums2 의 κ°’, nums1의 인덱슀, nums1의 κ°’ +nums2의 κ°’ ] 으둜 μž…λ ₯ν•΄μ€€λ‹€. ..

    [Java] 215. Kth Largest Element in an Array

    문제 νŒŒμ•… μ •μˆ˜ λ°°μ—΄ nums κ°€ 주어지고 kκ°€ 주어진닀. k번째둜 큰 μ›μ†Œλ₯Ό λ°˜ν™˜ν•˜λ©΄ λœλ‹€. 풀이 1️⃣ PriorityQueueλ₯Ό ν™œμš©ν•œ 풀이 πŸ’‘ λ– μ˜€λ₯Έ Idea λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν•˜λŠ” μš°μ„ μˆœμœ„νμ— μ›μ†Œλ“€μ„ λ„£κ³  k번째의 μ›μ†Œλ₯Ό λ°˜ν™˜ν•œλ‹€. import java.util.*; class Solution { public int findKthLargest(int[] nums, int k) { PriorityQueue pq = new PriorityQueue((a, b) -> b - a); for (int num : nums) { pq.offer(num); } int ans = 0; while (k-- > 0) { ans = pq.poll(); } return ans; } } κ²°κ³Ό πŸ“– 회고 λ„ˆλ¬΄ κ°„λ‹¨ν•˜κ²Œ 문제..

    [Java] 212. Word Search II

    문제 νŒŒμ•… λ¬Έμžκ°€ μ±„μ›Œμ ΈμžˆλŠ” m*n 크기의 λ³΄λ“œκ°€ 주어진닀. λ¬Έμžμ—΄μ΄ μ£Όμ–΄μ§€λŠ”λ°, ν•΄λ‹Ή λ¬Έμžμ—΄μ„ λ§Œλ“€ 수 있으면 λ°˜ν™˜ν•œλ‹€. 풀이 1️⃣ λ°±νŠΈλž˜ν‚Ήκ³Ό Set μ΄μš©ν•œ 풀이 πŸ’‘ λ– μ˜€λ₯Έ Idea λ°±νŠΈλž˜ν‚ΉμœΌλ‘œ λ§Œλ“€ 수 μžˆλŠ” λ¬Έμžμ—΄μ„ λͺ¨λ‘ ꡬ해본닀. ( μ΅œλŒ€ 길이 10으둜) κ΅¬ν•œ λ¬Έμžμ—΄μ„ Set 에 λ„£κ³ , μ£Όμ–΄μ§€λŠ” λ¬Έμžμ—΄μ΄ Set에 λ“€μ–΄μžˆλŠ”μ§€ ν™•μΈν•œλ‹€. import java.util.*; class Solution { int R; int C; boolean[][] checked; StringBuilder str = new StringBuilder(); int[] dr = {1, -1, 0, 0}; int[] dc = {0, 0, 1, -1}; char[][] board; Set set = new HashSet(); ..

    [Java] 211. Design Add and Search Words Data Structure

    문제 νŒŒμ•… νŠΉμ • λ¬Έμžμ—΄μ„ λ³΄κ΄€ν•˜κ³  search ν–ˆμ„ λ•Œ, μ‘΄μž¬ν•˜λ©΄ trueλ₯Ό λ°˜ν™˜ν•˜λŠ” 자료ꡬ쑰λ₯Ό λ§Œλ“€μ–΄μ•Όν•œλ‹€. . 이 ν¬ν•¨λœ κ²½μš°λŠ” μ–΄λ– ν•œ λ¬Έμžκ°€ 듀어가도 ν—ˆμš©λœλ‹€. 풀이 1️⃣ Trie 자료ꡬ쑰λ₯Ό μ΄μš©ν•œ 풀이 πŸ’‘ λ– μ˜€λ₯Έ Idea Trie 자료ꡬ쑰λ₯Ό μ΄μš©ν•˜λ©΄ μ ‘λ‘μ–΄λ‚˜ λΆ€λΆ„ λ¬Έμžμ—΄μ„ 검색할 수 μžˆλ‹€. λ”°λΌμ„œ, Trie 자료ꡬ쑰λ₯Ό κ΅¬ν˜„ν•˜μ˜€λ‹€. 특히, 이 λ¬Έμ œμ—μ„œλŠ” search κ³Όμ •μ—μ„œ . 이 ν¬ν•¨λ˜μ–΄ μžˆλŠ” κ²½μš°λŠ” ν•΄λ‹Ή λ…Έλ“œκ°€ κ°–λŠ” λͺ¨λ“  μžμ‹ λ…Έλ“œλ“€μ„ νƒμƒ‰ν•˜λ„λ‘ κ΅¬ν˜„ν•˜μ—¬ ν•΄κ²°ν•  수 μžˆμ„ 것이라 νŒλ‹¨ν•˜μ˜€λ‹€. import java.util.*; class WordDictionary { static class Node { Map children; boolean isEndOfWord; public Node() { t..

    [Java] 208. Implement Trie (Prefix Tree)

    문제 νŒŒμ•… Trie 자료ꡬ쑰λ₯Ό κ΅¬ν˜„ν•΄μ•Όν•˜λŠ” λ¬Έμ œμ΄λ‹€. νŠΈλΌμ΄λŠ” λ¬Έμžμ—΄μ„ μ €μž₯ν•˜κ³  효율적으둜 νƒμƒ‰ν•˜κΈ° μœ„ν•œ 트리 ν˜•νƒœμ˜ μžλ£Œκ΅¬μ‘°μ΄λ‹€. ν•΄μ‹œ ν…Œμ΄λΈ”μ„ μ‚¬μš©ν•˜λ©΄ λ˜λŠ”λ°, μ™œ 트라이λ₯Ό μ‚¬μš©ν•΄μ•Όν• κΉŒ? 🚨 ν•΄μ‹œ ν…Œμ΄λΈ”μ˜ 경우 μ ‘λ‘μ‚¬λ‚˜ λΆ€λΆ„ λ¬Έμžμ—΄λ‘œ κ²€μƒ‰ν•˜κΈ° νž˜λ“€λ‹€. λ˜ν•œ, ν•΄μ‹œ μ½”λ“œλ‘œ μ €μž₯ν•˜κΈ° λ•Œλ¬Έμ— μ •λ ¬λ˜μ–΄ μžˆμ§€ μ•Šλ‹€. 풀이 1️⃣ Node 클래슀 μ •μ˜ class Trie { Node root; static class Node { Map children; boolean isEndOfWord; public Node() { this.children = new HashMap(); this.isEndOfWord = false; } } public Trie() { this.root = new Node(); } } Trie..

    [Java] 637. Average of Levels in Binary Tree

    문제 νŒŒμ•… 각 level(depth)의 λ…Έλ“œλ“€μ˜ val κ°’ 평균을 κ΅¬ν•΄μ„œ λ°˜ν™˜ν•΄μ•Όν•œλ‹€. 풀이 1️⃣ κ·Έλž˜ν”„ 탐색을 μ΄μš©ν•œ 풀이 (μ „μœ„ 탐색) πŸ’‘ λ– μ˜€λ₯Έ Idea μ „μœ„ 탐색을 depthλ₯Ό 1μ”© μ¦κ°€μ‹œν‚€λ©΄μ„œ 탐색을 ν•œλ‹€. 각 depth에 λ„λ‹¬ν–ˆμ„ λ•Œ, ν•΄λ‹Ή depth의 ν•©κ³Ό 개수λ₯Ό μ €μž₯ν•˜λŠ” Listλ₯Ό 톡해 정보λ₯Ό κ°±μ‹ ν•œλ‹€. 탐색이 λλ‚˜κ³  λ‚˜μ„œ, 평균 값을 κ΅¬ν•΄μ„œ λ°˜ν™˜ν•΄μ€€λ‹€. import java.util.*; class Solution { List list = new ArrayList(); public List averageOfLevels(TreeNode root) { List ans = new ArrayList(); preOrder(root, 0); for (int i = 0; i < list.size()..

    [Java] 199. Binary Tree Right Side View

    문제 νŒŒμ•… μ£Όμ–΄μ§€λŠ” 트리λ₯Ό, 였λ₯Έμͺ½μ—μ„œ λ°”λΌλ³΄μ•˜μ„ λ•Œ λ³΄μ΄λŠ” λ…Έλ“œλ“€μ„ λ°˜ν™˜ν•΄μ•Όν•œλ‹€. 문제 해석 μ‹œ, μ•½κ°„ ν˜Όλ™μ΄ μžˆμ–΄μ„œ μ²˜μŒμ—λŠ” 트리의 κ°€μž₯ 였λ₯Έμͺ½ λ…Έλ“œλ“€μ„ 좜λ ₯ν•΄μ•Όν•˜λŠ” 쀄 μ•Œμ•˜λ‹€. λ”°λΌμ„œ μœ„μ™€ 같이 κ΅¬μ„±λœ 트리의 경우, root λ…Έλ“œμ˜ right node λŠ” μ—†κΈ° λ•Œλ¬Έμ— κ²°κ³Όκ°€ [1] 이 λ‚˜μ™€μ•Ό λœλ‹€κ³  μƒκ°ν–ˆλŠ”λ° μš”κ΅¬ν•˜λŠ” 닡은 [1,2] μ˜€λ‹€. 해석을 μ°Ύμ•„λ³΄λ‹ˆ, 이 트리λ₯Ό 였λ₯Έμͺ½μ—μ„œ 바라봀을 λ•Œ λ³΄μ΄λŠ” λ…Έλ“œλ“€μ„ 좜λ ₯ν•˜λΌλŠ” λœ»μ΄μ—ˆλ‹€. 풀이 1️⃣ μ „μœ„ 탐색을 μ΄μš©ν•œ 풀이 πŸ’‘ λ– μ˜€λ₯Έ Idea μ „μœ„ νƒμƒ‰μ˜ 경우 μœ„μ™€ 같이 루트 λ…Έλ“œμ—μ„œ μ‹œμž‘ν•˜μ—¬ μ™Όμͺ½ ν˜Ήμ€ 였λ₯Έμͺ½ 경둜의 끝에 λ„λ‹¬ν•˜λ©΄ λΆ€λͺ¨μ˜ λ°˜λŒ€νŽΈ λ…Έλ“œλ‘œ λ„˜μ–΄κ°€λŠ” λ°©μ‹μœΌλ‘œ νƒμƒ‰ν•œλ‹€. μœ„ 문제의 κ²½μš°λŠ” κ°€μž₯ 였λ₯Έμͺ½μ„ νƒμƒ‰ν•΄μ•Όν•˜λ―€λ‘œ 경둜λ₯Ό 였λ₯Έμͺ½μœΌλ‘œ μ‹œμž‘ν•˜λ„λ‘ ..

    [Java] 230. Kth Smallest Element in a BST

    문제 νŒŒμ•… k번째둜 μž‘μ€ 값을 좜λ ₯ν•΄μ•Όν•œλ‹€. 풀이 1️⃣ μ€‘μœ„ 순회λ₯Ό μ΄μš©ν•œ 풀이 πŸ’‘ λ– μ˜€λ₯Έ Idea 트리 κ΅¬μ‘°μ—μ„œ μ€‘μœ„ 순회λ₯Ό ν•˜λ©΄ μ˜€λ¦„μ°¨μˆœ μˆœμ„œλ‘œ λ…Έλ“œ 데이터λ₯Ό 좜λ ₯ν•  수 μžˆλ‹€. μ΄λŸ¬ν•œ 원리λ₯Ό μ μš©ν•˜μ—¬ k번째 λ…Έλ“œμ— μ ‘κ·Όν–ˆμ„ λ•Œ, 값을 μ €μž₯ν•˜λ„λ‘ κ΅¬ν˜„ν•˜λ©΄ λ˜κ² λ‹€κ³  νŒλ‹¨ν•˜μ˜€λ‹€. class Solution { int ans = 0; int idx = 1; public int kthSmallest(TreeNode root, int k) { inOrder(root, k); return ans; } private void inOrder(TreeNode node, int k) { if (node == null) { return; } inOrder(node.left, k); if (idx == k) { ans =..

    [Java] 530. Minimum Absolute Difference in BST

    문제 νŒŒμ•… 트리 μ•ˆμ— μ‘΄μž¬ν•˜λŠ” μž„μ˜μ˜ 두 λ…Έλ“œμ˜ μ°¨ 쀑 μ΅œμ†Ÿκ°’μ„ λ°˜ν™˜ν•΄μ•Όν•œλ‹€. 풀이 1️⃣ μ€‘μœ„ 순회λ₯Ό μ΄μš©ν•œ 풀이 πŸ’‘ λ– μ˜€λ₯Έ Idea λ…Έλ“œ κ΅¬μ‘°μ—μ„œ μ€‘μœ„ 순회λ₯Ό ν•˜λ©΄μ„œ λ…Έλ“œ 값을 좜λ ₯ν•˜λ©΄ μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬λœ 데이터λ₯Ό 얻을 수 μžˆλ‹€λŠ” νŠΉμ§•μ„ μ΄μš©ν•˜μ˜€λ‹€. 첫번째 λ…Έλ“œλŠ” 이전 λ…Έλ“œκ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ, 계산을 μƒλž΅ν•œλ‹€. 그리고 이전 λ…Έλ“œ 값에 기둝해쀀닀. λ‘λ²ˆμ§Έ λ…Έλ“œμ— λ„λ‹¬ν–ˆμ„ λ•Œ, 이전 λ…Έλ“œ κ°’κ³Όμ˜ 차이λ₯Ό κ΅¬ν•˜κ³  κ°±μ‹ ν•œλ‹€. κ°±μ‹  ν›„, 이전 λ…Έλ“œ 값에 λ‘λ²ˆμ§Έ 값을 기둝해쀀닀. .... μœ„ 과정을 λ°˜λ³΅ν•˜λŠ” 방식이닀. class Solution { int ans = Integer.MAX_VALUE; Integer prev = null; public int getMinimumDifference(TreeNode r..

    [Java] 153. Find Minimum in Rotated Sorted Array

    문제 νŒŒμ•… rotated 된 λ°°μ—΄ nums의 μ΅œμ†Ÿκ°’μ„ μ°ΎλŠ” λ¬Έμ œμ΄λ‹€. μ‹œκ°„ λ³΅μž‘λ„λŠ” O(logN) 을 λ§Œμ‘±ν•΄μ•Όν•œλ‹€. 풀이 1️⃣ 이뢄 탐색을 μ΄μš©ν•œ 풀이 πŸ’‘ λ– μ˜€λ₯Έ Idea 이전에 ν’€μ—ˆλ˜ Search in Rotated Sorted Array 문제의 일뢀뢄과 같은 λ¬Έμ œλΌμ„œ μ‰½κ²Œ ν•΄κ²°ν•  수 μžˆμ—ˆλ‹€. 이뢄 탐색을 μ§„ν–‰ν•˜λŠ”λ°, mid μœ„μΉ˜μ˜ κ°’κ³Ό right μœ„μΉ˜μ˜ 값을 λΉ„κ΅ν•΄μ„œ mid 값이 μž‘μ€ 경우, mid μœ„μΉ˜μ˜ μ›μ†Œλ“€μ€ μ˜€λ¦„μ°¨μˆœμœΌλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆμŒμ„ 보μž₯ν•  수 있기 λ•Œλ¬Έμ— 탐색 μ˜μ—­μ„ μ™Όμͺ½ μ˜μ—­μœΌλ‘œ μ΄λ™ν•˜λŠ” λ°©μ‹μœΌλ‘œ κ΅¬ν˜„ν•˜λ©΄ λœλ‹€. class Solution { public int findMin(int[] nums) { int left = 0, right = nums.length - 1; while (le..

    [Java] 33. Search in Rotated Sorted Array

    문제 νŒŒμ•… μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬λ˜μ–΄ μžˆλŠ” λ°°μ—΄ numsκ°€ μžˆμ—ˆλ‹€. 인덱슀 k번째 μ›μ†Œκ°€ 제일 첫 μ›μ†Œκ°€ λ˜λ„λ‘ rotated λ˜μ–΄μžˆλ‹€. target 이 λ°°μ—΄ nums 에 ν¬ν•¨λ˜μ–΄μžˆλŠ”μ§€ O(logN) 으둜 νƒμƒ‰ν•˜μ—¬ 인덱슀λ₯Ό λ°˜ν™˜ν•΄μ•Όν•œλ‹€. 풀이 1️⃣ 이뢄 탐색을 μ΄μš©ν•œ 풀이 πŸ’‘ λ– μ˜€λ₯Έ Idea λ¨Όμ €, 주어진 μ‹œκ°„ λ³΅μž‘λ„λ₯Ό λ§Œμ‘±ν•˜κΈ° μœ„ν•΄μ„  이뢄 탐색을 μ‚¬μš©ν•΄μ•Όν•¨μ„ μ•Œ 수 μžˆμ—ˆλ‹€. κ²°κ³Όμ μœΌλ‘œλŠ”, target이 nums에 μ‘΄μž¬ν•˜λŠ”μ§€λ₯Ό 이뢄 νƒμƒ‰ν•΄μ•Όν•˜λŠ”λ° νŠΉμ • 값을 νƒμƒ‰ν•˜κΈ° μœ„ν•΄μ„  μ •λ ¬λ˜μ–΄μžˆμ–΄μ•Ό ν•œλ‹€. λ”°λΌμ„œ, rotated된 배열을 μ •λ ¬λœ λ‘κ°œμ˜ λ°°μ—΄λ‘œ λ‚˜λˆ„κΈ° μœ„ν•΄ λ°°μ—΄ λ‚΄μ˜ μ΅œμ†Ÿκ°’μ„ κ²€μƒ‰ν•œλ‹€. ex) [4, 5, 6, 7, 0, 1, 2] 배열이 μžˆμ„ λ•Œ, [4, 5, 6, 7] κ³Ό [0, 1, 2] λ°°μ—΄ 2개둜..

    [Java] 162. Find Peak Element

    문제 νŒŒμ•… μ£Όλ³€ μ›μ†Œλ“€λ³΄λ‹€ 큰 μ›μ†Œλ₯Ό peak element라고 ν•œλ‹€. κ·ΈλŸ¬ν•œ μ›μ†Œκ°€ μ—¬λŸ¬κ°œλΌλ©΄ 아무 μ›μ†Œμ˜ 인덱슀λ₯Ό λ°˜ν™˜ν•˜λ©΄ λœλ‹€. μ‹œκ°„ λ³΅μž‘λ„κ°€ O(logN) 이 λ˜λ„λ‘ κ΅¬ν˜„ν•΄μ•Όν•œλ‹€. 풀이 1️⃣ 이뢄 탐색을 μ΄μš©ν•œ 풀이 πŸ’‘ λ– μ˜€λ₯Έ Idea μ‹œκ°„λ³΅μž‘λ„λ₯Ό 톡해 이뢄 탐색을 μ΄μš©ν•΄μ•Όν•¨μ„ μ•Œ 수 μžˆμ—ˆλ‹€. 보톡 이뢄탐색은 μ •λ ¬λœ λ°°μ—΄μ—μ„œλ§Œ μ‚¬μš©ν•΄μ™€μ„œ, 이뢄 탐색을 μ–΄λ–»κ²Œ ν™œμš©ν•  수 μžˆμ„μ§€ μ˜€λž«λ™μ•ˆ μƒκ°ν•΄λ³΄μ•˜λ‹€. mid 포인트 값이 mid + 1 포인트 값보닀 μž‘λ‹€λ©΄? mid 포인트 값은 peak element κ°€ 될 ν™•λ₯ μ΄ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€. λ”°λΌμ„œ 탐색 λ²”μœ„λ₯Ό mid+1 μ΄μƒμœΌλ‘œ μž‘μ•„μ€˜μ•Ό ν•  것이닀. λ§Œμ•½, mid 포인트 값이 mid + 1 포인트 κ°’ 보닀 크닀면 mid 포인트 값은 peak element ..

    [Java] 148. Sort List

    문제 νŒŒμ•… μ—°κ²° 리슀트의 headκ°€ 주어진닀. μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•΄μ„œ λ°˜ν™˜ν•΄μ•Όν•œλ‹€. 풀이 1️⃣ λ°°μ—΄κ³Ό mergeSort πŸ’‘ λ– μ˜€λ₯Έ Idea O(NlogN) λ°©μ‹μœΌλ‘œ ν•΄κ²°ν•˜κΈ° μœ„ν•œ 방법을 λ– μ˜¬λ €λ΄€λ‹€. ν•΄λ‹Ή μ‹œκ°„ λ³΅μž‘λ„λ‘œ μ •λ ¬ν•  수 μžˆλŠ” Merge Sort 방식을 μ‚¬μš©ν•΄μ•Ό ν•΄κ²°ν•  수 μžˆμ„ 것이라 νŒλ‹¨ν–ˆλ‹€. class Solution { public ListNode sortList(ListNode head) { int cnt = getCount(head); System.out.println(cnt); int[] arr = new int[cnt]; ListNode dummyHead = new ListNode(0, head); ListNode node = head; for (int i = 0; i < cnt; i..