java ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [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][๋ฐฑ์ค] 2805๋ฒ ๋๋ฌด ์๋ฅด๊ธฐ [๋ฐฑ์ค] 2805๋ฒ ๋๋ฌด ์๋ฅด๊ธฐ https://www.acmicpc.net/problem/2805 ๋ฌธ์ ์ ๊ทผ ์ฒ์์๋ ๊ฐ์ด ์์กํ์ ๋ฐ์ ์๊ณ ๋ฆฌ์ฆ ๋ถ๋ฅ๊ฐ ์ด๋ถ ํ์์ด๋ผ๊ณ ์จ์ ธ์์ด์, ์๋ ์ ๋ฐฐ์ด ๊ธฐ์ต์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ค. left, right, mid๋ฅผ ์ด์ฉํด์ ๊ฐ์ ์ฐพ์๋ค. ๋ง์ฝ ๋ฑ ๋จ์ด์ง๋ ๊ฐ์ด ์์ ๊ฒฝ์ฐ, ์ ์ด๋ m์ ๋๊ฒจ์ผํ๊ธฐ ๋๋ฌธ์ right๊ฐ์ returnํ๋๋ก ํ๋ค. Code import java.util.Arrays; import java.util.Scanner; public class BOJ2805 { static int cutHeight(int[] trees, int m){ Arrays.sort(trees); int left = 0; int right = trees[trees.length.. ๋๋ณด๊ธฐ [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][ํ๋ก๊ทธ๋๋จธ์ค] ์ด์ํ ๋ฌธ์ ๋ง๋ค๊ธฐ [ํ๋ก๊ทธ๋๋จธ์ค] ์ด์ํ ๋ฌธ์ ๋ง๋ค๊ธฐ https://programmers.co.kr/learn/courses/30/lessons/12930# ๋ฌธ์ ์ ๊ทผ ๋ฌธ์์ด์ ๊ณต๋ฐฑ ๊ธฐ์ค์ผ๋ก ๋๋๊ณ ๋๋ ์ง ๋จ์ด๋ค์ ๊ธฐ์ค์ผ๋ก ์ง์๋ ๋๋ฌธ์๋ก, ํ์๋ ์๋ฌธ์๋ก ๋ฐ๊พธ๋ ๋ฌธ์ ์ด๋ค. splitํจ์๋ฅผ ์ด์ฉํด ๋จ์ด๋ฅผ ๋๋๊ณ , ๋ฐ๋ณต๋ฌธ์ผ๋ก ์ง์, ํ์๋ฅผ ๊ตฌ๋ถํด์ ๋๋ฌธ์,์๋ฌธ์๋ก ๋ฐ๊ฟ์ฃผ์๋ค. Code class Solution { public String solution(String s) { String[] words = s.split(" "); StringBuilder answer = new StringBuilder(); for(int i = 0; i answer.length()) // ์ ๋ ฅ ๋ฌธ์์ด ๋ค์ ๊ณต๋ฐฑ์ด ๋ ์์ ๊ฒฝ์ฐ answer... ๋๋ณด๊ธฐ [Algorithm/Java][BOJ] 3052๋ฒ ๋๋จธ์ง [๋ฐฑ์ค] ๋ฐฑ์ค 3052๋ฒ ๋๋จธ์ง https://www.acmicpc.net/problem/3052 ๋ฌธ์ ์ ๊ทผ 10๊ฐ์ ์ ๋ ฅ๋ค์ 42๋ก ๋๋์ด์ ์๋ก ๋ค๋ฅธ ๋๋จธ์ง ๊ฐ๋ค์ด ๋ช ๊ฐ๊ฐ ์๋์ง ์ถ๋ ฅํ๋ ๋ฌธ์ ์๋ค. ์๋ก ๋ค๋ฅธ ๊ฐ์ด๋ผ๋ ํค์๋๋ฅผ ๋ณด๊ณ Set ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉด ๋๊ฒ ๋ค๊ณ ์๊ฐ์ด ๋ค์๋ค. Set์ ๋ฐ์ดํฐ์ ์ค๋ณต์ ์ ๊ฑฐํด์ฃผ๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ์ค๋ณต ๊ฒ์ฌ๋ฅผ ํ์ง์๊ณ ๋๋จธ์ง๋ฅผ add ํด์ฃผ๊ณ Set์ ํฌ๊ธฐ๋ง ์ถ๋ ฅํ๋ฉด ๋๋ ๋ฌธ์ ์ด๋ค. Code import java.util.Scanner; import java.util.HashSet; public class Main { public static void main(String[] args) { HashSet hs = new HashSet(10); Scanner sc = n.. ๋๋ณด๊ธฐ [Algorithm/Java][BOJ] ๋ฐฑ์ค 2908๋ฒ ์์ [๋ฐฑ์ค] 2908๋ฒ ์์ https://www.acmicpc.net/problem/2908 ๋ฌธ์ ์ ๊ทผ ๋ฌธ์์ด์ ๋ค์ง๋ ๋ฌธ์ ์ด๋ฏ๋ก StringBuilder์ reverse() ํจ์๋ฅผ ์ด์ฉํ๊ธฐ๋ก ํ๊ณ , ์ ๋ ฅ์ด ์ธ์๋ฆฌ ์ ๋๊ฐ์ด๊ธฐ ๋๋ฌธ์ BufferedReader๋ฅผ ์ฐ์ง์๊ณ ๊ทธ๋ฅ Scanner๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ ฅ์ ๋ฐ์๋ค. Code import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); String[] input = sc.nextLine().split(" "); int max = -1; for(String num: input){ StringBuilder.. ๋๋ณด๊ธฐ ์ด์ 1 2 3 4 5 6 7 8 ๋ค์