๋ฌธ์ https://leetcode.com/problems/asteroid-collision/ ์ฃผ์ด์ง `asteroids` ๋ฐฐ์ด์ ์ฐ์ํ ์ํ์ฑ(asteroid)์ ๋ํ๋ด๋ ์ ์๋ก ์ด๋ฃจ์ด์ ธ์๋ค. ๊ฐ ์ํ์ฑ์ ์ ๋๊ฐ์ ์ด๊ฒ์ ์ฌ์ด์ฆ๋ฅผ ๋ํ๋ด๊ณ , ๋ถํธ๋ ๋ฐฉํฅ์ ๋ํ๋ธ๋ค(+๋ ์ค๋ฅธ์ชฝ, -๋ ์ผ์ชฝ). ์ํ์ฑ๋ค์ ๊ฐ์ ์๋๋ก ์์ง์ธ๋ค. ๋ชจ๋ ์ถฉ๋์ด ๋๋ ํ์ ์ํ์ฑ์ ์ํ๋ฅผ ๋ฐํํ๋ผ. ๋ง์ฝ ๋ ์ํ์ฑ์ด ๋ง๋๋ค๋ฉด, ๋ ์์ ๊ฒ์ด ํญ๋ฐํ๋ค. ๋ง์ฝ ๋ ์ํ์ฑ์ด ๊ฐ์ ํฌ๊ธฐ๋ผ๋ฉด, ๋ชจ๋ ํญ๋ฐํ๋ค. ๊ฐ์ ๋ฐฉํฅ์ผ๋ก ์์ง์ด๋ ๋ ์ํ์ฑ์ ์ ๋ ๋ง๋์ง ์๋๋ค. ํ์ด class Solution { public int[] asteroidCollision(int[] asteroids) { ArrayDeque st = new ArrayD..
๋ฌธ์ https://leetcode.com/problems/add-two-numbers-ii/description/ ์ฃผ์ด์ง ๋๊ฐ์ ๋น์ด์์ง ์์ linked list๋ ๊ฐ๊ฐ ์์๊ฐ ์๋ ์ ์๋ก ์ด๋ฃจ์ด์ ธ์๋ค. ๊ฐ์ฅ ์ค์ํ ์ซ์๊ฐ ์ฒซ๋ฒ์งธ๋ก ์ค๋ฉฐ, ๊ทธ๋ค์ ๋
ธ๋ ๊ฐ๊ฐ์ ํ์๋ฆฌ ์๋ฅผ ํฌํจํ๋ค. ๋ ์ซ์๋ฅผ ๋ํ ํฉ์ linked list ํํ๋ก ๋ฐํํ๋ผ. ๋ ์ซ์๋ 0์ผ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ , ์์๋ฆฌ๊ฐ 0์ผ๋ก ๋ํ๋์ง ์๋๋ค. ํ์ด Stack์ ์ฌ์ฉํ ํ์ด public static ListNode addTwoNumbers(ListNode l1, ListNode l2) { ArrayDeque st1 = new ArrayDeque(); ArrayDeque st2 = new ArrayDeque(); while (l1 != n..
๋ฌธ์ https://leetcode.com/problems/find-eventual-safe-states/description/ ๊ฐ ๋
ธ๋์ ๋ผ๋ฒจ์ด 0๋ถํฐ n-1๊น์ง ๋ถ์ด์๋ n๊ฐ์ ๋
ธ๋๋ก ์ด๋ฃจ์ด์ง ๋ฐฉํฅ ๊ทธ๋ํ๊ฐ ์๋ค. ๊ทธ๋ํ๋ 0-indexed ์ธ ์ด์ฐจ์ ์ ์ ๋ฐฐ์ด `graph`๋ก ํํ๋๊ณ , graph[i]๋ ๋
ธ๋ i์ ์ธ์ ํ ์ ์ ๋ฐฐ์ด์ด๋ค. ์ฆ, ๋
ธ๋ i๋ก๋ถํฐ grape[i]์ ์๋ ๋
ธ๋๋ค ๊ฐ์๋ ๊ฐ์ ์ด ์กด์ฌํ๋ค. ๋ง์ฝ ํ ๋
ธ๋์์ ๋๊ฐ๋ ๊ฐ์ ์ด ์๋ค๋ฉด ํด๋น ๋
ธ๋๋ terminal node์ด๋ค. ํ ๋
ธ๋๊ฐ safe node๋ผ๋ ๊ฒ์ ํด๋น ๋
ธ๋๋ก๋ถํฐ ์์ํ๋ ๋ชจ๋ ๊ฐ๋ฅํ ๊ฒฝ๋ก๊ฐ terminal node ํน์ ๋ค๋ฅธ safe node๋ก ์ด์ด์ง๋ค๋ ๊ฒ์ด๋ค. ๊ทธ๋ํ์ ๋ชจ๋ safe node๋ฅผ ํฌํจํ๋ ๋ฐฐ์ด์ ..
๋ฌธ์ https://leetcode.com/problems/minimum-depth-of-binary-tree/description/ ์ฃผ์ด์ง ์ด์งํธ๋ฆฌ์์ ํธ๋ฆฌ์ ์ต์ ๊น์ด๋ฅผ ๊ตฌํ์ฌ๋ผ. ์ต์ ๊น์ด๋ ๋ฃจํธ ๋
ธ๋๋ถํฐ ๊ฐ์ฅ ๊ฐ๊น์ด ๋ฆฌํ ๋
ธ๋๊น์ง ๋ด๋ ค๊ฐ๋ ์ต๋จ ๊ฑฐ๋ฆฌ์ ์๋ ๋
ธ๋์ ์์ด๋ค. Note: ๋ฆฌํ ๋
ธ๋๋ ์์ ๋
ธ๋๋ฅผ ๊ฐ์ง๊ณ ์์ง ์๋ค. ํ์ด 1. BFS - ๋๋น ์ฐ์ ํ์ fun minDepth(root: TreeNode?): Int { if(root == null) return 0 val q = ArrayDeque() q.add(root) var depth = 1 while (q.isNotEmpty()) { val curSize = q.size repeat(curSize) { val curNode = q..