๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋ฐ˜์‘ํ˜•

Algorithm

[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.. ๋”๋ณด๊ธฐ
[Algorithm/Java][ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋ฌธ์ž์—ด ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ฐฐ์น˜ํ•˜๊ธฐ [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋ฌธ์ž์—ด ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ฐฐ์น˜ํ•˜๊ธฐ https://programmers.co.kr/learn/courses/30/lessons/12917 ๋ฌธ์ œ์ ‘๊ทผ ๋ฌธ์ž์—ด s๋ฅผ char[] ๋ฐฐ์—ด๋กœ ๋„ฃ์–ด์„œ Arrays.sort๋ฅผ ์ด์šฉํ•ด์„œ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ๋’ค ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ๋ฐฐ์—ด temp๋ฅผ ์—ญ์ˆœ์œผ๋กœ result์— ํ•˜๋‚˜์”ฉ ๋”ํ•ด์ฃผ์—ˆ๋‹ค. Code import java.util.*; class Solution { public String solution(String s) { char[] temp = s.toCharArray(); Arrays.sort(temp); StringBuilder result = new StringBuilder(); for(int i= temp.length-1; i>=0; i--){ resul.. ๋”๋ณด๊ธฐ
[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.. ๋”๋ณด๊ธฐ
[Algorithm/Java][LeetCode] 21. Merge Two Sorted Lists [LeetCode] 21. Merge Two Sorted Lists https://leetcode.com/problems/merge-two-sorted-lists/ ๋ฌธ์ œ์ ‘๊ทผ ๋‘ ๊ฐœ์˜ ์ •๋ ฌ๋œ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋ฅผ ํ•˜๋‚˜์˜ ์ •๋ ฌ๋œ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋กœ ํ•ฉ์น˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ฒซ๋ฒˆ์งธ ๋…ธ๋“œ๋ฅผ ์žƒ์–ด๋ฒ„๋ฆฌ๋ฉด ์•ˆ๋˜๋Š” ๊ฒƒ์ด๋‹ค.(์ฒซ๋ฒˆ์งธ๋ฅผ ์žƒ์–ด๋ฒ„๋ฆฌ๋ฉด ๋‹ค ์žƒ์–ด๋ฒ„๋ฆฐ๋‹ค.) ๊ทธ๋ž˜์„œ MergeList์— ์•„๋ฌด๊ฐ’์ด๋‚˜ ๋„ฃ์–ด์„œ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  next๋ถ€ํ„ฐ ์ฒซ๋ฒˆ์งธ ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•ด ์ฃผ์—ˆ๋‹ค. temp๋ฅผ ์ด์šฉํ•ด์„œ next๋ฅผ ์—ฐ๊ฒฐํ•ด ์ฃผ์—ˆ๊ณ  list1๊ณผ list2 ๋‘˜ ์ค‘ ํ•˜๋‚˜๊ฐ€ null์ด ๋  ๋•Œ๊นŒ์ง€ ๋‘๊ฐœ๋ฅผ ๋น„๊ตํ•ด์„œ ๋” ์ž‘์€ ๊ฐ’์„ ๊ฐ€์ง„ list๋ฅผ temp๋ฅผ ์ด์šฉํ•ด์„œ ์—ฐ๊ฒฐํ•ด ์ฃผ์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰์— ๋‘˜ ์ค‘ ํ•˜๋‚˜๊ฐ€ null์ด ๋˜๋ฉด while๋ฌธ์„ ๋น ์ ธ๋‚˜์™€์„œ.. ๋”๋ณด๊ธฐ