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

    [Java] 242. Valid Anagram

    ๋ฌธ์ œ ํŒŒ์•… ๋‘ ๋ฌธ์ž์—ด s์™€ t๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‘ ๋ฌธ์ž์—ด์„ ์ด๋ฃจ๋Š” ๋ฌธ์ž์˜ ์ข…๋ฅ˜์™€ ๊ฐœ์ˆ˜๊ฐ€ ๋™์ผํ•  ๋•Œ, Anagram ์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ Anagram์ธ์ง€ ํŒ๋‹จํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ํ’€์ด 1๏ธโƒฃ map์„ ์ด์šฉํ•œ ํ’€์ด ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea s ๋ฌธ์ž์—ด์„ ์ชผ๊ฐ  ํ›„, ๊ฐ ๋ฌธ์ž๋ณ„ ๊ฐœ์ˆ˜๋ฅผ map์— ๊ธฐ๋กํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  t ๋ฌธ์ž์—ด์„ ์ชผ๊ฐ  ํ›„, ์ˆœํšŒํ•˜๋ฉด์„œ map์— ๊ธฐ๋ก๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๊ฐœ์ˆ˜๋ฅผ -1 ํ•œ๋‹ค. ๋งŒ์•ฝ, ๋ฌธ์ž๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ๊ฐœ์ˆ˜๊ฐ€ 0๋ฏธ๋งŒ์ด ๋˜๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋˜ํ•œ, ์• ์ดˆ์— ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ ๋‹ค๋ฅด๋‹ค๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. [Java] 383. Ransom Note ๋ฌธ์ œ ํŒŒ์•… ransomNote ๋ฌธ์ž์—ด์ด magazine ๋ฌธ์ž์—ด์˜ ๋ฌธ์ž๋“ค๋กœ ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ์œผ๋ฉด true๋ฅผ, ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผํ•œ๋‹ค. magazine์˜..

    [Java] 383. Ransom Note

    ๋ฌธ์ œ ํŒŒ์•… ransomNote ๋ฌธ์ž์—ด์ด magazine ๋ฌธ์ž์—ด์˜ ๋ฌธ์ž๋“ค๋กœ ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ์œผ๋ฉด true๋ฅผ, ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผํ•œ๋‹ค. magazine์˜ ๋ฌธ์ž๋Š” ์ค‘๋ณต์œผ๋กœ ์—ฌ๋Ÿฌ๋ฒˆ ์“ฐ์ผ ์ˆ˜ ์—†๋‹ค. ํ’€์ด 1๏ธโƒฃ map์„ ์ด์šฉํ•œ ํ’€์ด ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea magazine ๋ฌธ์ž์—ด์„ ๋ฌธ์ž๋กœ ์ชผ๊ฐ  ํ›„, map ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•ด์„œ ๋ฌธ์ž ๋ณ„ ๊ฐœ์ˆ˜๋ฅผ ๊ธฐ๋กํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ , ransomNote ๋ฌธ์ž์—ด์˜ ๋ฌธ์ž๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ๊ธฐ๋กํ•œ map ์ž๋ฃŒ๊ตฌ์กฐ์— ๋ฌธ์ž๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ์ฒดํฌํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ๊ฐœ์ˆ˜๋ฅผ -1 ํ•œ๋‹ค. ๊ธฐ๋ก๋˜์–ด ์žˆ๋Š” ๋ฌธ์ž๊ฐ€ ์—†๊ฑฐ๋‚˜ ๊ฐœ์ˆ˜๊ฐ€ ๋ชจ์ž๋ฅธ ๊ฒฝ์šฐ false ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. import java.util.*; class Solution { public boolean canConstruct(String ransomNote, S..

    [Java] 219. Contains Duplicate II

    ๋ฌธ์ œ ํŒŒ์•… ์ •์ˆ˜ ๋ฐฐ์—ด์ธ nums ์—์„œ ๋‘ ์ธ๋ฑ์Šค์˜ ์ฐจ์ด๊ฐ€ k ์ดํ•˜์ด๋ฉด์„œ ๊ฐ’์ด ๊ฐ™์œผ๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์—†๋‹ค๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผํ•œ๋‹ค. ํ’€์ด 1๏ธโƒฃ Map์„ ์ด์šฉํ•œ ํ’€์ด ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea nums๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ map์— ๊ฐ’์„ key๋กœ ์ธ๋ฑ์Šค๋ฅผ value๋กœ ์ €์žฅํ•˜๊ณ , map์— ์ด๋ฏธ ์กด์žฌํ•˜๋ฉด ํ˜„์žฌ ์œ„์น˜์™€ map์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์ธ๋ฑ์Šค์˜ ์ฐจ์ด๋ฅผ ๊ตฌํ•ด์„œ ๋น„๊ตํ•ด๋ณธ๋‹ค. ๋งŒ์•ฝ, ์ธ๋ฑ์Šค๊ฐ„ ์ฐจ์ด๊ฐ€ k๋ณด๋‹ค ํฌ๋‹ค๋ฉด map์„ ๊ฐฑ์‹ ํ•ด์ค€๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ดํ›„์— ์ธ๋ฑ์Šค ์ฐจ์ด๊ฐ€ k ์ดํ•˜์ธ ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. import java.util.*; class Solution { public boolean containsNearbyDuplicate(int[] nums, int k) { HashMap map = new HashMa..

    [Java] 1. Two Sum

    ๋ฌธ์ œ ํŒŒ์•… ์ •์ˆ˜ ๋ฐฐ์—ด nums ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋ฐฐ์—ด์˜ ๋‘ ์›์†Œ๋ฅผ ๋”ํ–ˆ์„ ๋•Œ, target์ด ๋˜๋Š” ๊ฐ’์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผํ•œ๋‹ค. ๋‹ต์€ ์ •ํ™•ํžˆ 1๊ฐœ ์กด์žฌํ•œ๋‹ค. ํ’€์ด 1๏ธโƒฃ HashMap ์„ ์ด์šฉํ•œ ํ’€์ด ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea ๊ฐ ๊ฐ’์„ key ๋กœ, ์ธ๋ฑ์Šค ๊ฐ’์„ value ๋กœ ์ €์žฅํ•˜๋Š” map์„ ์ •์˜ํ•œ๋‹ค. nums ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ target-nums[i] ๊ฐ€ map ์— ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ์กด์žฌํ•œ๋‹ค๋ฉด ๋‹ต์œผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค. import java.util.*; class Solution { public int[] twoSum(int[] nums, int target) { HashMap map = new HashMap(); for(int i=0;i a[0] - b[0]); int left = 0, right = nodes.l..

    [Java] 150. Evaluate Reverse Polish Notation

    ๋ฌธ์ œ ํŒŒ์•… ์—ญ ํด๋ž€๋“œ ํ‘œ๊ธฐ๋ฒ•์— ๋”ฐ๋ฅธ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผํ•œ๋‹ค. ์—ฐ์‚ฐ์ž๋ฅผ ๋งŒ๋‚˜๋ฉด ์ด์ „์— ๋งŒ๋‚ฌ๋˜ ์ˆซ์ž 2๊ฐœ๋ฅผ ์—ฐ์‚ฐํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์˜ˆ๋กœ, 4 13 5 / + ์˜ ๊ฒฝ์šฐ / ์—ฐ์‚ฐ์ž๋ฅผ ๋งŒ๋‚˜๊ธฐ ์ง์ „ 13 ๊ณผ 5๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ 13 / 5 ๋ฅผํ•ด์ฃผ๊ณ  ๋‚˜์˜จ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ ๋„ฃ์–ด์ฃผ๋ฉด 4 2 + ๊ฐ€ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  + ์—ฐ์‚ฐ์ž๋ฅผ ๋งŒ๋‚˜๊ธฐ ์ง์ „ 4์™€ 2๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ 4 + 2 ๋ฅผ ํ•œ ๊ฐ’์ธ 6์„ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋œ๋‹ค. ํ’€์ด 1๏ธโƒฃ ์Šคํƒ์„ ์ด์šฉํ•œ ํ’€์ด ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea ์—ญ ํด๋ž€๋“œ ํ‘œ๊ธฐ๋ฒ•์˜ ์—ฐ์‚ฐ ๋ฐฉ์‹ ์ƒ, ์Šคํƒ์„ ์ด์šฉํ•ด์„œ ํ’€์–ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋ฐ”๋กœ ๋“ค์—ˆ๋‹ค. ์—ฐ์‚ฐ์ž๋ฅผ ๋งŒ๋‚˜๋ฉด, ๊ฐ€์žฅ ๊ทผ์ฒ˜์— ์žˆ๋Š” ์ˆ˜๋ฅผ ๋’ค๋กœ ๋‘๊ณ  ์—ฐ์‚ฐํ•œ ๋‹ค์Œ, ๋‹ค์‹œ ์Šคํƒ์— ๋„ฃ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜๋ฉด ๋  ๊ฒƒ์ด๋‹ค. import java.util.*; class Solution { Stack stac..

    [Java] 155. Min Stack

    ๋ฌธ์ œ ํŒŒ์•… O(1) ์‹œ๊ฐ„ ๋ณต์žก๋„๋กœ ํ•ด๋‹น ๋ฉ”์„œ๋“œ ๋“ค์„ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ํ•ด์•ผํ•œ๋‹ค. ํ’€์ด 1๏ธโƒฃ Stack ํด๋ž˜์Šค ์ด์šฉ ์œ„ ๋ฌธ์ œ์—์„œ, ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ฉ”์„œ๋“œ๋Š” getMin() ๋ฉ”์„œ๋“œ์ด๋‹ค. ๋‹ค๋ฅธ, push(), pop(), top() ๋ฉ”์„œ๋“œ๋Š” ๊ธฐ์กด Stack ํด๋ž˜์Šค์—์„œ๋„ O(1) ์— ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋”ฐ๋ผ์„œ, ์Šคํƒ์— ์š”์†Œ๋ฅผ ์‚ฝ์ž…ํ•  ๋•Œ, ์ตœ์†Ÿ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  getMin() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ๋ฐ”๋กœ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผ O(1)์„ ๋งŒ์กฑํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์ตœ์†Ÿ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ์Šคํƒ์„ ๋”ฐ๋กœ ์ถ”๊ฐ€ํ•ด์„œ, ๊ฐ’์„ push ํ• ๋•Œ๋งˆ๋‹ค ํ•ด๋‹น ์œ„์น˜์˜ ์Šคํƒ ๊ฐ’๊นŒ์ง€์˜ ์ตœ์†Ÿ๊ฐ’์„ ๊ธฐ๋กํ•˜๋„๋ก ๊ตฌํ˜„ํ•˜์˜€๋‹ค. import java.util.*; class MinStack { Stack stack; Stack stackForMin; pub..

    [Java] 74. Search a 2D Matrix

    ๋ฌธ์ œ ํŒŒ์•… m x n ํ–‰๋ ฌ์ด ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ–‰์€ ๋น„๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด์žˆ๋‹ค. ๊ฐ ํ–‰์˜ ์ฒซ ์›์†Œ๋Š” ์ด์ „ ํ–‰์˜ ๋งˆ์ง€๋ง‰ ์›์†Œ๋ณด๋‹ค ํฌ๋‹ค. target์ด ํ–‰๋ ฌ์— ์กด์žฌํ•˜๋Š”์ง€ ์ฐพ์•„์•ผํ•œ๋‹ค. ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(log(m*n)) ์œผ๋กœ ์ˆ˜ํ–‰ํ•ด์•ผํ•œ๋‹ค. ํ’€์ด 1๏ธโƒฃ ์ด๋ถ„ ํƒ์ƒ‰ ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea ํ–‰๋ ฌ ๋‚ด์— ์›์†Œ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€๋งŒ ํŒ๋‹จํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์—, 2์ฐจ์› ํ–‰๋ ฌ์„ 1์ฐจ์›์œผ๋กœ ๋ณ€ํ™˜์‹œํ‚จ ํ›„ ์ด๋ถ„ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•˜๋ฉด ์‹œ๊ฐ„๋ณต์žก๋„ O(log(m*n)) ๋„ ๋งŒ์กฑํ•˜๋ฉด์„œ, ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ผ ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๋˜ํ•œ, ๊ฐ ํ–‰ ๋‚ด ์›์†Œ์™€ ํ–‰๋“ค ๋ผ๋ฆฌ ์ •๋ ฌ๋˜์–ด ์žˆ์–ด์„œ ํŽธํ•˜๊ฒŒ ์ด๋ถ„ํƒ์ƒ‰์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ํŒ๋‹จํ•˜์˜€๋‹ค. ์œ„ ์•„์ด๋””์–ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ, ํŠน์ • ์›์†Œ๋ฅผ ์ฐพ์•„๋‚ด๋Š” ์ด๋ถ„ํƒ์ƒ‰ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜์˜€๋‹ค. class Solution { public bool..

    [Java] 35. Search Insert Position

    ๋ฌธ์ œ ํŒŒ์•… ์ค‘๋ณต๋˜์ง€ ์•Š๋Š”, ์ •๋ ฌ๋œ ์ •์ˆ˜ ๋ฐฐ์—ด์ด ์ฃผ์–ด์ง„๋‹ค. target ์— ํ•ด๋‹นํ•˜๋Š” ์›์†Œ์˜ ์œ„์น˜๋‚˜, ์—†๋‹ค๋ฉด ์‚ฝ์ž…ํ–ˆ์„๋•Œ ์ •๋ ฌ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ์ธ๋ฑ์Šค์˜ ์œ„์น˜๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(logN) ์ด์–ด์•ผ ํ•œ๋‹ค. ํ’€์ด 1๏ธโƒฃ ์ด๋ถ„ ํƒ์ƒ‰ ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ O(logN) ์œผ๋กœ ํ•ด์•ผํ•œ๋‹ค๋Š” ๋ง์„ ๋ณด์ž๋งˆ์ž, ์ด๋ถ„ํƒ์ƒ‰์œผ๋กœ ํ•ด๊ฒฐํ•ด์•ผ๊ฒ ๊ตฌ๋‚˜ ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ์ด๋ถ„ํƒ์ƒ‰์„ ๊ตฌํ˜„ํ•ด์„œ, target ์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ ์ ˆํ•œ ์œ„์น˜๋ฅผ ์ฐพ์œผ๋ฉด ๋œ๋‹ค. nums๊ฐ€ ์ •๋ ฌ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— target์ด nums์˜ ์–ด๋– ํ•œ ์›์†Œ๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ํฐ ๊ฒฝ์šฐ๋Š” ์•ž์„ ์—์„œ ์ฒ˜๋ฆฌํ•ด์ฃผ์—ˆ๋‹ค. ์ด๋ถ„ํƒ์ƒ‰์—์„œ๋Š”, ์ •๋ ฌ์„ ์œ ์ง€ํ•˜๋ฉด์„œ target ๊ฐ’ ์ดํ•˜๋ฅผ ๋ฐฐ์—ด์— ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ๊ตฌ์„ฑํ•˜์˜€๋‹ค. class Solution { publ..

    [Java] 21. Merge Two Sorted Lists

    ๋ฌธ์ œ ํŒŒ์•… ์ •๋ ฌ๋œ ๋‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ์ฒซ๋ฒˆ์งธ ๋…ธ๋“œ๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ๋‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ํ•˜๋‚˜์˜ ์ •๋ ฌ๋œ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋กœ ๋งŒ๋“ค์–ด์•ผํ•œ๋‹ค. ๋ฐ˜๋“œ์‹œ ์ž…๋ ฅ๋ฐ›์€ ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑํ•ด์•ผํ•œ๋‹ค. ํ’€์ด 1๏ธโƒฃ ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea ๊ฐ ๋ฆฌ์ŠคํŠธ์˜ ๊ฐ’์„ ๋น„๊ตํ•˜๊ณ , ์ž‘์€ ๊ฐ’์„ ํฌํ•จํ•˜๋Š” ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์‹์œผ๋กœ ํ•ฉ์น˜๋ฉด ๋œ๋‹ค. ๋‹จ, ๋น„๊ตํ•  ๋…ธ๋“œ๊ฐ€ ์—†์–ด์ง„ ๊ฒฝ์šฐ ๋‚จ์•„์žˆ๋Š” ๋…ธ๋“œ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. class Solution { public ListNode mergeTwoLists(ListNode list1, ListNode list2) { ListNode head = new ListNode(); ListNode ans = head; ListNode result; while (list1 != null || list2 != null) { if (list..

    [Java] 2. Add Two Numbers

    ๋ฌธ์ œ ํŒŒ์•… ๋น„์–ด์žˆ์ง€ ์•Š์€ ๋‘๊ฐœ์˜ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์Œ์ˆ˜๊ฐ€ ์•„๋‹Œ ์ •์ˆ˜์˜ ์ˆซ์ž๋ฅผ ์—ญ์ˆœ์œผ๋กœ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์— ๋ณด๊ด€๋˜์–ด์žˆ๋‹ค. ex. 342 ์ธ ๊ฒฝ์šฐ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์— [2] -> [4] -> [3] ์œผ๋กœ ๊ตฌ์„ฑ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋กœ ํ‘œํ˜„๋˜๋Š” ๋‘ ์ •์ˆ˜์˜ ํ•ฉ์„ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋กœ ๋ฐ˜ํ™˜ํ•ด์•ผํ•œ๋‹ค. ํ’€์ด 1๏ธโƒฃ ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea l1์˜ val๊ณผ l2์˜ val์„ ๋”ํ•˜๊ณ  10์œผ๋กœ ๋‚˜๋ˆˆ ๋ชซ๊ณผ ๋‚˜๋จธ์ง€๋ฅผ ๊ตฌํ•œ๋‹ค. 10์œผ๋กœ ๋‚˜๋ˆˆ ๋ชซ์€ ๋‹ค์Œ ๋…ธ๋“œ๋“ค์˜ val ํ•ฉ์— ๋”ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. ๋‚˜๋จธ์ง€๋ฅผ ํ†ตํ•ด ๋…ธ๋“œ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด ์ด์ „ ๋…ธ๋“œ์˜ next ๋…ธ๋“œ๋กœ ์—ฐ๊ฒฐํ•ด์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ , l1 ๊ณผ l2์˜ ๊ธธ์ด๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ, l1 ๊ณผ l2๊ฐ€ ๋‘˜๋‹ค null์ด ์•„๋‹ˆ๋ผ๋ฉด ๋กœ์ง์„ ๊ณ„์† ์ˆ˜ํ–‰ํ•ด์•ผํ•œ๋‹ค. ๋˜ํ•œ, ๋ชซ์œผ๋กœ ๋„˜์–ด์˜จ ๊ฐ’์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€๋กœ ์ƒ์„ฑํ•ด..

    [Java] 141. Linked List Cycle

    ๋ฌธ์ œ ํŒŒ์•… ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ํ—ค๋“œ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์‚ฌ์ดํด์„ ์ด๋ฃจ๋Š”์ง€ ๊ฒฐ์ •ํ•ด์•ผํ•œ๋‹ค. ํ’€์ด 1๏ธโƒฃ Set ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•œ ํ’€์ด ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea ๋…ธ๋“œ๋ฅผ set ์ž๋ฃŒ๊ตฌ์กฐ์— ์ž…๋ ฅํ•˜๊ณ , ๋‹ค์Œ ๋…ธ๋“œ๋กœ ์ง„ํ–‰ํ•˜๊ธฐ ์ „์— ์ง„ํ–‰ํ•  ๋…ธ๋“œ๊ฐ€ set์— ์ž…๋ ฅ๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์ง„ํ–‰ํ•  ๋…ธ๋“œ๊ฐ€ set์— ์ž…๋ ฅ๋˜์–ด์žˆ์—ˆ๋‹ค๋ฉด, ์‚ฌ์ดํด์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์œ„ ์•„์ด๋””์–ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์˜€๋‹ค. public class Solution { public boolean hasCycle(ListNode head) { Set set = new HashSet(); ListNode now = head; set.add(now); while (now != null) { ListNode nextNode = now.next; if (set..

    [Java] 3. Longest Substring Without Repeating Characters

    ๋ฌธ์ œ ํŒŒ์•… ๋ฌธ์ž์—ด s๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋ฌธ์ž๊ฐ€ ๋ฐ˜๋ณต๋˜์ง€ ์•Š๋Š” ๊ฐ€์žฅ ๊ธด ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•ด์•ผํ•œ๋‹ค. ํ’€์ด 1๏ธโƒฃ Queue ๋ฅผ ์ด์šฉํ•œ ํ’€์ด ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea ๋ฌธ์ž์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ, Queue์— ๋ฌธ์ž๋ฅผ ์ž…๋ ฅํ•œ๋‹ค. ๋‹จ, ์ž…๋ ฅํ•˜๊ธฐ ์ „, ์ž…๋ ฅํ•˜๋ ค๋Š” ๋ฌธ์ž๊ฐ€ Queue์— ์ด๋ฏธ ์กด์žฌํ•œ๋‹ค๋ฉด ๊ทธ ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์ž…๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ pwwkew ๋ฌธ์ž์—ด์ธ ๊ฒฝ์šฐ ์ฒซ p๋Š” ํ์— ์—†์œผ๋ฏ€๋กœ ํ์— ์ž…๋ ฅํ•œ๋‹ค. Queue = [ p ] ๋‘๋ฒˆ์งธ w๋กœ ์•„์ง ํ์— ์—†์œผ๋ฏ€๋กœ ํ์— ์ž…๋ ฅํ•œ๋‹ค. Queue = [ p, w ] ์„ธ๋ฒˆ์งธ w๋Š” ์ด๋ฏธ ํ์— ์กด์žฌํ•˜๋Š” ๋ฌธ์ž์ด๋ฏ€๋กœ ํ์— ๋ฌธ์ž w๊ฐ€ ์—†์–ด์งˆ๋•Œ๊นŒ์ง€ pop ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ž…๋ ฅํ•œ๋‹ค. Queue = [ w ] ... ์ด๋Ÿฐ์‹์œผ๋กœ ์ง„ํ–‰๋˜๋ฉด์„œ ์ค‘๋ณต๋˜๋Š” ๋ฌธ์ž๊ฐ€ ์—†๋Š” ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์ด ํ์— ๊ฐฑ์‹ ๋œ๋‹ค. class Solution ..

    [Java] 209. Minimum Size Subarray Sum

    ๋ฌธ์ œ ํŒŒ์•… ์ •์ˆ˜ ๋ฐฐ์—ด nums ์™€ ์–‘์ˆ˜ target ์ด ์ฃผ์–ด์ง„๋‹ค ๋ถ€๋ถ„ ์ง‘ํ•ฉ์˜ ํ•ฉ์ด target ๊ณผ ๋™์ผํ•˜๊ฑฐ๋‚˜ ์ด์ƒ ๊ฐ’์„ ๊ฐ–๋Š” ์ตœ์†Œ ๊ธธ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผํ•œ๋‹ค. ์—†๋‹ค๋ฉด, 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ํ’€์ด 1๏ธโƒฃ ํˆฌ ํฌ์ธํ„ฐ ํ’€์ด ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea ํˆฌํฌ์ธํ„ฐ ๋ฐฉ์‹์œผ๋กœ ๋ถ€๋ถ„ํ•ฉ์„ ๊ตฌํ•˜๋‹ค๊ฐ€, target๊ณผ ๋™์ผํ•˜๊ฑฐ๋‚˜ ๊ทธ ์ด์ƒ ๊ฐ’์ด ๋˜๋ฉด ๊ธฐ๋กํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ , ์™ผ์ชฝ ํฌ์ธํ„ฐ๋ฅผ ์˜ฎ๊ธด ๋’ค์— ๋‹ค์‹œ ํƒ์ƒ‰์„ ํ•œ๋‹ค. class Solution { public int minSubArrayLen(int target, int[] nums) { int ans = Integer.MAX_VALUE; int left = 0, right = 0; int sum = 0; while (right = target ์ด ๋˜๋Š” ๋ถ€๋ถ„ ์ฐพ๊ธฐ int find = target + f..

    [Java] 167. Two Sum II - Input Array Is Sorted

    ๋ฌธ์ œ ํŒŒ์•… ๋น„ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ๋Š” ์ •์ˆ˜ ๋ฐฐ์—ด numbers ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋ฐฐ์—ด์—์„œ target ๊ฐ’์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ’ 2๊ฐœ๋ฅผ ์ฐพ์•„, ํ•ด๋‹น ๊ฐ’์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผํ•œ๋‹ค. ( index1 < index2 ) ํ’€์ด 1๏ธโƒฃ ํˆฌ ํฌ์ธํ„ฐ ๋ฐฉ์‹ ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea ์ธ๋ฑ์Šค 0 ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” left ์™€ ๋ฐฐ์—ด์˜ ๋์—์„œ ์‹œ์ž‘ํ•˜๋Š” right ํฌ์ธํ„ฐ๋ฅผ ์ •์˜ํ•œ ๋’ค, ๋‘ ๊ฐ’์˜ ํ•ฉ์ด target ๋ณด๋‹ค ํฌ๋ฉด right ํฌ์ธํ„ฐ๋ฅผ ๊ฐ์†Œ์‹œํ‚ค๊ณ  target๋ณด๋‹ค ์ž‘์œผ๋ฉด left ๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ๋  ๊ฒƒ์ด๋ผ ํŒ๋‹จํ–ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด, ๋น„ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ๊ณ  ์ •๋‹ต์ด ๋ฌด์กฐ๊ฑด ์กด์žฌํ•˜๋Š” ๋ฐฐ์—ด๋กœ ์ฃผ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ํŒ๋‹จํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‹œ๊ฐ„๋ณต์žก๋„๋„ O(N) ์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. class Solution { publ..

    [Java] 125. Valid Palindrome

    ๋ฌธ์ œ ํŒŒ์•… ๋ชจ๋“  ๋Œ€๋ฌธ์ž๋ฅผ ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ ํ›„, ์ˆซ์ž์™€ ์•ŒํŒŒ๋ฒณ์ด ์•„๋‹Œ ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•œ ๋ฌธ์ž๊ฐ€ ๋’ค๋กœ ์ฝ์—ˆ์„๋•Œ์™€ ์•ž์œผ๋กœ ์ฝ์—ˆ์„๋•Œ๊ฐ€ ๊ฐ™์œผ๋ฉด palindrome ์ด๋ผ๊ณ  ํ•œ๋‹ค. palindrome ์ด ๋งž์œผ๋ฉด true๋ฅผ, ์•„๋‹ˆ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ผ ํ’€์ด 1๏ธโƒฃ StringBuilder ์‚ฌ์šฉ ํ’€์ด ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea ๋จผ์ €, ๊ณต๋ฐฑ๊ณผ ๋ฌธ์ž ํ˜น์€ ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฒƒ๋“ค์„ ์ œ๊ฑฐํ•ด์„œ ๋ถ™์ด๋Š” ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค. ๊ทธ๋ฆฌ๊ณ , ์—ญ์ˆœ์œผ๋กœ ๋‚˜์—ดํ•œ ๋ฌธ์ž์™€ ๋™์ผํ•œ์ง€ ํ™•์ธํ•ด์„œ palindrome ์ธ์ง€ ํ™•์ธํ•˜๋ฉด ๋  ๊ฒƒ์ด๋‹ค. class Solution { public boolean isPalindrome(String s) { StringBuilder sb = new StringBuilder(); char[] arr = s.toLowerCase().toCha..