๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS/LeetCode 150

    [Java] 55. Jump Game

    ๋ฌธ์ œ ํŒŒ์•… ์ •์ˆ˜ ๋ฐฐ์—ด nums ๊ฐ€ ์ฃผ์–ด์ง€๊ณ , ์ฒซ๋ฒˆ์งธ ์ธ๋ฑ์Šค์—์„œ ์‹œ์ž‘ํ•œ๋‹ค. ์ธ๋ฑ์Šค์— ์ฃผ์–ด์ง„ ๊ฐ’์€ ์ตœ๋Œ€๋กœ ์ ํ”„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์ด๋‹ค. ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค์— ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉด true ๋ฅผ ์—†์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผํ•œ๋‹ค. ํ’€์ด 1๏ธโƒฃ ๋‚ด๊ฐ€ ๋– ์˜ฌ๋ฆฐ ์•„์ด๋””์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ํ˜„์žฌ ์œ„์น˜์—์„œ ๊ฐ€์žฅ ๋ฉ€๋ฆฌ ๋›ธ ์ˆ˜ ์žˆ๋Š” ์ธ๋ฑ์Šค๋ฅผ ํ™•์ธํ•œ๋‹ค. ๋งŒ์•ฝ ๊ฐ€์žฅ ๋ฉ€๋ฆฌ ๋›ธ ์ˆ˜ ์žˆ๋Š” ์œ„์น˜๊ฐ€ ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค ( nums.length - 1 ) ์ด์ƒ์ด๋ผ๋ฉด true ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ํ˜„์žฌ ์œ„์น˜์—์„œ ๊ฐ€์žฅ ๋ฉ€๋ฆฌ ๋›ธ ์ˆ˜ ์žˆ๋Š” ์ธ๋ฑ์Šค ๊นŒ์ง€ ์ˆœํšŒํ•˜๋ฉด์„œ, ๋‹ค์Œ์œผ๋กœ ๊ฐ€์žฅ ๋ฉ€๋ฆฌ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ธ๋ฑ์Šค๋ฅผ ์ฐพ๊ณ  ์ด๋™ํ•œ๋‹ค. [2, 3, 1, 1, 4] ๋ฅผ ์˜ˆ์‹œ๋กœ ๋“ค์ž๋ฉด, ํ˜„์žฌ ์œ„์น˜ 0์ธ 2์—์„œ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ธ๋ฑ์Šค๋Š” 1๊ณผ 2์ด๊ณ  ์ธ๋ฑ์Šค 1์€ (1 + 3) = 4๋ฒˆ ์ธ๋ฑ์Šค ๊นŒ..

    [Java] 122. Best Time to Buy and Sell Stock 2

    ๋ฌธ์ œ ํŒŒ์•… i๋‚  ์ฃผ์‹ ๊ฐ€๊ฒฉ์€ prices[i] ๊ณผ ๊ฐ™์ด ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ์ฃผ์–ด์ง„๋‹ค. ๋งค์ผ ์ฃผ์‹์„ ์‚ด์ง€ ํŒ”์ง€ ๊ฒฐ์ •ํ•ด์•ผํ•œ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์–ป์–ด์ง€๋Š” ์ตœ๋Œ€ ์ˆ˜์ต์„ ๋ฐ˜ํ™˜ํ•ด์•ผํ•œ๋‹ค. ํ’€์ด 1๏ธโƒฃ ๋‚ด๋ฆผ ์ฐจ์ˆœ์œผ๋กœ ๋ฐ”๋€Œ๋Š” ์ˆœ๊ฐ„ ์ˆ˜์ต ๊ณ„์‚ฐ ํ’€์ด๊ฐ€ ์ž˜ ๋– ์˜ค๋ฅด์ง€ ์•Š์•„์„œ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด๋ดค๋‹ค. Case 1. 1, 6, 7, 100 ์œ„ ๊ฒฝ์šฐ๋Š” 1์— ์‚ฌ์„œ 6์— ํŒ”๊ณ  7์— ์‚ฌ์„œ 100์— ํŒ”๋ฉด, 1์— ์‚ฌ์„œ 100์— ํŒŒ๋Š”๊ฒƒ๋ณด๋‹ค ์†ํ•ด์ด๋‹ค. 6~7 ์— ๊ณต๋ฐฑ์ด ์ƒ๊ธฐ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. Case 2. 1, 6, 5, 100 ์œ„ ๊ฒฝ์šฐ๋Š” 1์— ์‚ฌ์„œ 6์— ํŒ”๊ณ , 5์— ์‚ฌ์„œ 100์— ํŒ”๋ฉด, 1์— ์‚ฌ์„œ 100์— ํŒŒ๋Š” ๊ฒƒ๋ณด๋‹ค ์ด๋“์ด๋‹ค. 5~6 ๊ต์ง‘ํ•ฉ ๋ถ€๋ถ„์ด ์ƒ๊ฒจ ์ถ”๊ฐ€์ ์ธ ์ด๋“์ด ๋  ์ˆ˜ ์žˆ๋‹ค. Case 3. 1, 6, 6, 100 ์œ„ ๊ฒฝ์šฐ๋Š” 1์— ์‚ฌ์„œ 6์— ํŒ”๊ณ  6์—..

    [Java] 121. Best Time to Buy and Sell Stock

    ๋ฌธ์ œ ํŒŒ์•… i๋‚  ์ฃผ์‹ ๊ฐ€๊ฒฉ์€ prices[i] ๊ณผ ๊ฐ™์ด ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ์ฃผ์–ด์ง„๋‹ค. ์ตœ๋Œ€๋กœ ์ˆ˜์ต์„ ๋ฐ˜ํ™˜ํ•ด์•ผํ•œ๋‹ค. ๋งŒ์•ฝ, ์–ด๋– ํ•œ ์ˆ˜์ต๋„ ์–ป์ง€ ๋ชปํ•œ๋‹ค๋ฉด 0 ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ํ’€์ด 1๏ธโƒฃ ์ด์ค‘ for๋ฌธ ํ’€์ด - ์‹œ๊ฐ„ ์ดˆ๊ณผ ๊ฐ€์žฅ ๋จผ์ € ๋– ์˜ค๋ฅธ ํ’€์ด๋Š”, ํŒŒ๋Š” ๋‚ ์„ ๊ณ ์ •ํ•˜๊ณ  ํŒŒ๋Š” ๋‚  ์ด์ „์˜ ๊ฐ€๊ฒฉ๋“ค์„ ์ˆœํšŒํ•˜๋ฉด์„œ ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. class Solution { public int maxProfit(int[] prices) { int ans = 0; for (int i = 1; i < prices.length; i++) { int sell = prices[i]; for (int j = 0; j < i; j++) { int buy = prices[j]; int profit = sell - buy; if (profit ..

    [Java] 189. Rotate Array

    ๋ฌธ์ œ ํŒŒ์•… ์ •์ˆ˜ ๋ฐฐ์—ด nums ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์Œ์ˆ˜๊ฐ€ ์•„๋‹Œ k ๋งŒํผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ฐฐ์—ด์„ ํšŒ์ „์‹œ์ผœ์•ผ ํ•œ๋‹ค. ํ’€์ด 1๏ธโƒฃ ๋ฐฐ์—ด 2๊ฐœ๋ฅผ ์ด์šฉํ•œ ํ’€์ด ๋จผ์ €, ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ k๋ฅผ ํ•œ๋ฒˆ ์ „์ฒ˜๋ฆฌ ํ•ด์•ผํ•œ๋‹ค. ์™œ๋ƒํ•˜๋ฉด, ๊ธธ์ด๊ฐ€ N์ธ ๋ฐฐ์—ด nums๋ฅผ N๋ฒˆ rotate ํ•˜๋ฉด ์›์ƒํƒœ๋กœ ๋Œ์•„์˜ค๊ธฐ ๋•Œ๋ฌธ์— k๋ฅผ N์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋งŒํผ๋งŒ rotate ํ•œ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด, ์ด๋™์‹œํ‚ฌ ์›์†Œ์˜ ๊ฐœ์ˆ˜๋Š” k%N ๊ฐœ๊ฐ€ ๋œ๋‹ค. ์ด๋™ ์‹œํ‚ฌ ๋ถ€๋ถ„์„ tmp๋ผ๋Š” ๋ฐฐ์—ด์„ ์ •์˜ํ•ด์„œ ๋‚ด์šฉ์„ ๋ณต์‚ฌํ•ด๋‘”๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋’ค์—์„œ๋ถ€ํ„ฐ ์ด๋™์‹œํ‚จ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ณด๊ด€ํ•ด๋‘์—ˆ๋˜ ๋‚ด์šฉ์„ ์•ž์— ๋ถ™์—ฌ์ฃผ๋ฉด ๋œ๋‹ค. class Solution { public void rotate(int[] nums, int k) { int N = nums.length; k = k % N; int..

    [Java] 169. Majority Element

    ๋ฌธ์ œ ํŒŒ์•… ํฌ๊ธฐ๊ฐ€ n์ธ ๋ฐฐ์—ด nums ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. n/2 ๋ณด๋‹ค ๋งŽ์ด ๋“ฑ์žฅํ•˜๋Š” ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผํ•œ๋‹ค. ํ’€์ด 1๏ธโƒฃ ํ•ด์‹œ ํ™œ์šฉ ๋ฐ”๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋– ์˜ค๋ฅธ ํ’€์ด์ด๋‹ค. ๋จผ์ €, ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ ์›์†Œ๋ฅผ key ๊ฐ’์œผ๋กœ ์›์†Œ๊ฐ€ ๋‚˜ํƒ€๋‚œ ํšŸ์ˆ˜๋ฅผ value ๊ฐ’์œผ๋กœ map์— ๊ธฐ๋กํ•œ ๋’ค, map์„ ํ•œ๋ฒˆ ๋” ์ˆœํšŒํ•˜๋ฉด์„œ, ๋‚˜ํƒ€๋‚œ ํšŸ์ˆ˜๊ฐ€ n/2 ๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. import java.util.*; class Solution { public int majorityElement(int[] nums) { int n = nums.length; int result = nums[0]; HashMap map = new HashMap(); for (int num : nums) { map.put(num, map.getOrDefault(n..

    [Java] 80. Remove Duplicates from Sorted Array II

    ๋ฌธ์ œ ํŒŒ์•… nums ๋Š” ๋น„๋‚ด๋ฆผ์ฐจ์ˆœ ์ •์ˆ˜ ๋ฐฐ์—ด์ด๋ฉฐ, ์ตœ๋Œ€ 2๊ฐœ๊นŒ์ง€ ์ค‘๋ณต๋  ์ˆ˜ ์žˆ๋„๋ก ๋‚˜๋จธ์ง€ ์ค‘๋ณต์€ ์ œ๊ฑฐํ•ด์•ผํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ , ์ƒ๋Œ€์ ์ธ ์œ„์น˜๋ฅผ ์œ ์ง€ํ•ด์•ผํ•œ๋‹ค. ์ฃผ์–ด์ง„ ์กฐ๊ฑด์— ๋งž๊ฒŒ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•œ ์›์†Œ์˜ ๊ฐœ์ˆ˜ k๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผํ•œ๋‹ค. nums ๋ฐฐ์—ด ์™ธ ๋‹ค๋ฅธ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋œ๋‹ค. ํ’€์ด 1๏ธโƒฃ ํฌ์ธํ„ฐ ๋ฐฉ์‹ nums ๋ฐฐ์—ด๋งŒ ์‚ฌ์šฉํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์—, nums ๋ฐฐ์—ด์˜ ์›์†Œ๋“ค์„ ๊ฐฑ์‹ ํ•ด๋‚˜๊ฐ€๋ฉฐ ์ค‘๋ณต์„ ์ตœ๋Œ€ 2๊ฐœ๊นŒ์ง€ ํ—ˆ์šฉํ•˜๋ฉด์„œ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ๋จผ์ €, ๊ฐฑ์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ์กฐ๊ฑด์ด ๋ญ”์ง€ ์ƒ๊ฐํ•ด๋ดค๋‹ค. ์›์†Œ๊ฐ€ ๋‹ฌ๋ผ์ง€๋Š” ์ˆœ๊ฐ„ ๊ฐฑ์‹ ํ•˜๊ณ  ํฌ์ธํ„ฐ๋ฅผ ์ด๋™ ์›์†Œ๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ ์ค‘๋ณต๋œ ์›์†Œ๊ฐ€ 2๊ฐœ๊นŒ์ง€๋Š” ํ—ˆ์šฉ๋˜๋ฏ€๋กœ, 2๊ฐœ๊นŒ์ง€๋Š” ๊ฐฑ์‹ ํ•˜๊ณ  ํฌ์ธํ„ฐ๋ฅผ ์ด๋™ ๋‹จ, 3๊ฐœ๋ถ€ํ„ฐ๋Š” ๊ฐฑ์‹ ํ•˜์ง€ ์•Š๊ณ  ์›์†Œ๊ฐ€ ๋‹ฌ๋ผ์ง€๋Š” ์ˆœ๊ฐ„๊นŒ์ง€ ํฌ์ธํ„ฐ๋ฅผ ์›€์ง์ผ ์ˆ˜ ์—†์Œ ์œ„ ์กฐ๊ฑด์„ ๋จผ์ € ์ƒ๊ฐ..

    [Java] 26. Remove Duplicates from Sorted Array

    ๋ฌธ์ œ ํŒŒ์•… nums๋Š” ๋น„๋‚ด๋ฆผ์ฐจ์ˆœ ๋ฐฐ์—ด์ด๋‹ค. ์ค‘๋ณต๋˜๋Š” ์›์†Œ๋“ค์„ 1๊ฐœ์˜ ์›์†Œ๋“ค๋กœ ๋ฐ”๊พธ๊ณ , ์ƒ๋Œ€์ ์ธ ์œ„์น˜๋Š” ์œ ์ง€ํ•ด์•ผํ•œ๋‹ค. ์ฆ‰, [1, 1, 2, 2, 3] ์ธ ๊ฒฝ์šฐ, [1, 2, 3, _, _ ] ์œผ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ , ์ค‘๋ณต์„ ์ œ๊ฑฐํ•œ ์ˆ˜์˜ ๊ฐœ์ˆ˜ k๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผํ•œ๋‹ค. ํ’€์ด 1๏ธโƒฃ ํฌ์ธํ„ฐ ๋ฐฉ์‹ ๋จผ์ €, unique ํ•œ ์›์†Œ๋ฅผ ๊ฐฑ์‹ ํ•˜๊ธฐ ์œ„ํ•œ ํฌ์ธํ„ฐ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ์ƒ๊ฐ์„ ํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ , ๋ฐฐ์—ด nums ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ๊ฐ’์ด ๋‹ฌ๋ผ์ง€๋Š” ์ธ๋ฑ์Šค๋ฅผ ๋จผ์ € ์ถ”์ถœํ•ด๋ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. for(int i=1; i

    [Java] 27. Remove Element

    ๋ฌธ์ œ ํŒŒ์•… ์ •์ˆ˜ ๋ฐฐ์—ด nums์™€ val์ด ์ฃผ์–ด์ง„๋‹ค. ๋ฐฐ์—ด nums ์—์„œ val๊ณผ ์ผ์น˜ํ•˜๋Š” ์›์†Œ๋ฅผ ๋ชจ๋‘ ์ œ๊ฑฐํ•ด์•ผํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  nums ๋ฐฐ์—ด์—์„œ val๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ์›์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผํ•œ๋‹ค. ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ์›์†Œ์˜ ๊ฐœ์ˆ˜๊ฐ€ k ์ผ ๋•Œ, nums์˜ k๋ฒˆ ์ธ๋ฑ์Šค ๊นŒ์ง€๋Š” val๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ์›์†Œ๋“ค๋กœ ์ฑ„์›Œ๋„ฃ์–ด์•ผ ํ•œ๋‹ค. ํ’€์ด 1๏ธโƒฃ Arrays.sort() ์‚ฌ์šฉ ๋จผ์ €, ๋ฌธ์ œ ์กฐ๊ฑด์„ ๋ณด๋‹ˆ nums ๋ฐฐ์—ด์˜ ์›์†Œ ์ตœ๋Œ“๊ฐ’์€ 50์ž„์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋”ฐ๋ผ์„œ, nums ๋ฐฐ์—ด์—์„œ val๊ณผ ์ผ์น˜ํ•˜๋Š” ์›์†Œ๋ฅผ 51๋กœ ๋ชจ๋‘ ๋ณ€ํ™˜ํ•ด๋‘๊ณ  ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•˜๋ฉด, ๋ฐฐ์—ด์˜ ๋’ท๋ถ€๋ถ„์œผ๋กœ ๋ฐ€๋ ค๋‚˜ ์žˆ์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ–ˆ๋‹ค. import java.util.*; class Solution { public int removeElement(int[] nums, ..

    [Java] 88. Merge Sorted Array

    ๋ฌธ์ œ ํŒŒ์•… ๋‘ ์ •์ˆ˜ ๋ฐฐ์—ด nums1 ๊ณผ nums2 ๋Š” ๋น„๋‚ด๋ฆผ์ฐจ์ˆœ(non-decreasing) ๋ฐฐ์—ด์ด๋‹ค. ๋น„๋‚ด๋ฆผ์ฐจ์ˆœ : ๊ฐ™์€ ํฌ๊ธฐ์˜ ์›์†Œ๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ex) 1 2 3 ex) 1 1 2 nums1 ๋ฐฐ์—ด์˜ ๊ธธ์ด๋Š” m+n ์œผ๋กœ, ์ฒซ m๋ฒˆ์งธ๊นŒ์ง€์˜ ์›์†Œ๋Š” merged ๋˜์–ด์•ผ ํ•˜๊ณ  ๋‚˜๋จธ์ง€ n๊ฐœ๋Š” 0์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ n๊ฐœ์˜ 0 ์— nums2์˜ ์›์†Œ๋“ค์ด ๋“ค์–ด๊ฐ€์•ผํ•˜๊ณ  ์ตœ์ข… ๊ฒฐ๊ณผ๋Š” ๋น„๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋œ๋‹ค. ํ’€์ด 1๏ธโƒฃ Array.sort() ๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋– ์˜ค๋ฅธ ํ’€์ด์ด๋‹ค. ๋จผ์ € nums1 ๋ฐฐ์—ด์˜ 0 ๋ถ€๋ถ„์— nums2 ๋ฐฐ์—ด์˜ ์›์†Œ๋ฅผ ์ž…๋ ฅํ•œ ํ›„, Arrays.sort() ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ž…๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๊ฐ„๋‹จํ•˜๋‹ค. nums1์˜ m+1 ๋ฒˆ์งธ ๋ถ€ํ„ฐ m+n๋ฒˆ์งธ ๊นŒ์ง€ 0์œผ๋กœ ์ž…๋ ฅ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ for(..