leetcode ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [Algorithm/Java][LeetCode] 121. Best Time to Buy and Sell Stock [LeetCode] 121. Best Time to Buy and Sell Stock https://leetcode.com/problems/best-time-to-buy-and-sell-stock ๋ฌธ์ ์ ๊ทผ ๊ฐ์ฅ ์ธ๊ฒ ์ฌ์ ๊ฐ์ฅ ๋น์ธ๊ฒ ์์ ๋ ์ป๋ ์ด์ค์ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค. ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ์ ์ด์ฉํด์ dp๋ฐฐ์ด์ ์ง๊ธ๊น์ง ์ค์์ ๊ฐ์ฅ ์ผ ๊ฐ์ ์ ์ฅํ๊ณ ํ์ฌ ๋ ์ง์ ๊ฐ๊ฒฉ prices[i]์ ๊ทธ ์ ๋ ๊น์ง ๊ฐ์ฅ ์ผ ๊ฐ๊ฒฉ dp[i-1]์ ๋นผ์ ์ด์ค์ ๊ตฌํ ๋ค์ max์ ๋น๊ตํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ค๋ ๊ฐ๊ฒฉ์ด dp[i-1]๋ณด๋ค ์ธ๋ค๋ฉด dp[i]๋ฅผ ์ค๋ ๊ฐ๊ฒฉ์ผ๋ก ๋ฐ๊ฟ์ฃผ๊ณ ์๋๋ผ๋ฉด dp[i-1]์ ๋ฃ์ด์ค๋ค. Code class Solution { public int maxProfit(int[] prices) { int max.. ๋๋ณด๊ธฐ [Algorithm/Java][LeetCode] 101. Symmetric Tree [LeetCode] 101. Symmetric Tree https://leetcode.com/problems/symmetric-tree ๋ฌธ์ ์ ๊ทผ ๋ฃจํธ ๋ ธ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ ์๋ธํธ๋ฆฌ์ ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ๊ฐ ๋์นญ์ธ์ง๋ฅผ ํ์ ํ๋ ๋ฌธ์ ์ด๋ค. BFS์ฒ๋ผ ํ๋ฅผ ์ด์ฉํด์ ๋ฐ๋ณต๋ฌธ์ผ๋ก ํ๋ ค๊ณ ํ์ผ๋, ๋ญ๊ฐ ์ ์๋์ ์ฌ๊ทํจ์๋ฅผ ์ด์ฉํ๋ค. ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ์ ๋ ธ๋๋ฅผ ์ฌ๊ท ํจ์๋ฅผ ์ด์ฉํด ๋น๊ต ๋์ฌ ์ ์๋ ๊ฒฝ์ฐ์ ์ 4๊ฐ์ง 1. ์์ชฝ ๋ ธ๋๊ฐ ๋ชจ๋ null์ธ ๊ฒฝ์ฐ(์๋ฌด ๋ฌธ์ ์์ด ๋๊น์ง ํธ๋ฆฌ๋ฅผ ์ํ ํ์ผ๋ฏ๋ก true) 2. ํ์ชฝ ๋ ธ๋๋ง null์ธ ๊ฒฝ์ฐ(๋น๋์นญ์ด๋ฏ๋ก false) 3. ์์ชฝ ๋ ธ๋์ ๊ฐ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ(๋น๋์นญ์ด๋ฏ๋ก false) 4. ์์ชฝ ๋ ธ๋์ ๊ฐ์ด ๊ฐ์ ๊ฒฝ์ฐ(์ง๊ธ๊น์ง๋ ๋์นญ์ด๋ฏ๋ก ์ถ๊ฐ์ ์ธ ํธ๋ฆฌ ์ํ - ์ฌ๊ท ํจ์.. ๋๋ณด๊ธฐ [Algorithm/Java][LeetCode] 70. Climbing Stairs [LeetCode] 70. Climbinh Stairs https://leetcode.com/problems/climbing-stairs/ ๋ฌธ์ ์ ๊ทผ ์ฒ์์๋ ์ฌ๊ท๋ฅผ ์ด์ฉํด์ ํ์ด๋ณด๋ ค๊ณ ํด์ ์ ์ถ์ ํ์ง๋ง ์๊ฐ ์ด๊ณผ๊ฐ ๋์๋ค. ๊ทธ๋์ DP ๋ฐฉ์์ผ๋ก ํ์ด๋ณด์๋ค. DP ๋ฐฉ์์ผ๋ก ํ๊ธฐ ์ํด์๋ ์ ํ์?์ ๋ฐ๊ฒฌํด์ผ ํ๋ค. ๋ญ๊ฐ ๊ต์ฅํ ์ด๋ ค์ ๋ณด์ด์ง๋ง ๊ฐ์๊ธฐ ๊ฐ์ด ์กํ๋ค.(๊ท์น์ ์ฐพ๋ ๋๋?) ๊ณ๋จ์ ํ๋ฒ์ 1์นธ ๋๋ 2์นธ์ ์ด๋ํ ์ ์๋ค. ๊ทธ๋ฌ๋ฉด 1๋ฒ์งธ ๊ณ๋จ์ ์ฌ๋ผ๊ฐ๋ ค๋ฉด 0๋ฒ์งธ์์ ์์ํด์ผํ๋ค. ๊ทธ๋ฆฌ๊ณ 2๋ฒ์งธ ๊ณ๋จ์ ์ฌ๋ผ๊ฐ๊ธฐ ์ํด์๋ 0๋ฒ์งธ๊ฑฐ๋ 1๋ฒ์งธ ๊ณ๋จ์์ ์์ํด์ผํ๋ค. ๋, 3๋ฒ์งธ ๊ณ๋จ์ ์ฌ๋ผ๊ฐ๊ธฐ ์ํด์๋ 1๋ฒ์งธ๊ฑฐ๋ 2๋ฒ์งธ ๊ณ๋จ์์ ์์ํด์ผํ๋ค. ์ฌ๊ธฐ์ n๋ฒ์งธ ๊ณ๋จ์ ์ค๋ฅด๊ธฐ์ํด์๋ n-1๋ฒ์งธ์ n-2๋ฒ์งธ .. ๋๋ณด๊ธฐ [Algorithm/Java][LeetCode] 53. Maximum subarray [LeetCode] 53. Maximum subarray https://leetcode.com/problems/maximum-subarray/ ๋ฌธ์ ์ ๊ทผ ์ฃผ์ด์ง ๋ฐฐ์ด์์ ์ฐ์๋๋ ๊ฐ์ ๋ํ sum์ด ๊ฐ์ฅ ํฐ subarray์ sum์ ์ฐพ๋ ๋ฌธ์ ์ด๋ค. ์ฒ์์ ์ด ๋ฌธ์ ๋ฅผ ๋ณด์๋ง์ ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ์ธ ๊ฒ ๊ฐ์์ dp๋ผ๋ ๋ฐฐ์ด์ ๋ง๋ค๊ณ dp[i]๋ i๋ฒ์งธ ์ธ๋ฑ์ค๊น์ง ์ค์ ๊ฐ๋ฅํ ๊ฐ์ฅ ํฐ subarray์ ๊ฐ์ ์ ์ฅํ๋ ๋ฐฐ์ด๋ก ๋ง๋ค์ด์ ํ์๋ค.(๋ฐฉ๋ฒ1) ๊ทผ๋ฐ ๋ฐฉ๋ฒ1๋ก ํ๊ณ ๋ณด๋๊น ๊ตณ์ด dp๋ผ๋ ๋ฐฐ์ด์ ๋ง๋ค์ด์ ์ผ์ผ์ด ๋ค ์ ์ฅํ ํ์ ์์ด ํ์ฌ์ธ๋ฑ์ค ์ ์ subarray๊ฐ(dp[i-1])๋ง ์๋ฉด ๋ ๊ฑฐ ๊ฐ์๋ค. ์ฆ ๋ฐฐ์ด์ ๋ง๋ค์ง ์๊ณ dp[i-1]์ ์ ์ฅํ๋ sum์ด๋ผ๋ ๋ณ์๋ฅผ ๋ง๋ค์ด์ dp[i-1] ์ด์ ๊ฐ(dp[.. ๋๋ณด๊ธฐ [Algorithm/Java][LeetCode] 20. Valid Parentheses [LeetCode] 20. Valid Parentheses https://leetcode.com/problems/valid-parentheses/ ๋ฌธ์ ์ ๊ทผ ๊ดํธ๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ธ์ง ์ ๋ซํ๊ณ ์ด๋ ธ๋์ง๋ฅผ ํ์ธํ๋ ๋ฌธ์ ์ด๋ค. ๋น์ทํ(๋๊ฐ์) ๋ฌธ์ ๋ฅผ ๋ฐฑ์ค์์ ํ์ด๋ด์ Stack์ ์ด์ฉํ๋ฉด ๋๋ค๋ ๊ฒ์ ์๊ณ ์์๋ค. ์ฌ๋ ๊ดํธ์ผ ๋๋ Stack์ push๋ฅผ ํด์ฃผ๊ณ ๋ซํ ๊ดํธ์ผ ๋๋ Stack์ top์ด ๊ฐ์ ์ข ๋ฅ์ ๊ดํธ์ธ์ง ํ์ธํ๊ณ popํ๊ฑฐ๋ ์๋๋ผ๋ฉด false๋ฅผ ๋ฆฌํดํด์ค๋ค. ์ด๋ ์์ธ์ฒ๋ฆฌํ ์ํฉ์ 2๊ฐ์ง์ด๋ค. ์ด๋ฆฐ ๊ดํธ๋ก๋ง ์ด๋ฃจ์ด์ ธ์์๋. ๋ซํ ๊ดํธ๋ก๋ง ์ด๋ฃจ์ด์ ธ์์๋. 1๋ฒ์ฒ๋ผ ์ด๋ฆฐ ๊ดํธ๋ก๋ง ์ด๋ฃจ์ด์ ธ์๋ค๋ฉด for๋ฌธ์ ๋น ์ ธ๋์์ ๋ Stack์ด ๋น์ด์์ง ์์ ๊ฒ์ด๊ณ , 2๋ฒ์ฒ๋ผ ๋ซํ ๊ดํธ๋ก๋ง ์ด๋ฃจ์ด์ ธ ์๋ค๋ฉด sw.. ๋๋ณด๊ธฐ ์ด์ 1 ๋ค์