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

๐Ÿบ ๋งค์ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜

2018 ์นด์นด์˜ค ์ฝ”๋”ฉํ…Œ์ŠคํŠธ 1์ฐจ ์บ์‹œ JS ๋ฌธ์ œํ’€์ด ๐Ÿ”—์ง์ ‘ ๋ฌธ์ œ ํ’€๋Ÿฌ๊ฐ€๊ธฐ ์ž…๋ ฅ ์บ์‹œํฌ๊ธฐ n๊ณผ ๋„์‹œ์ด๋ฆ„ ๋ฐฐ์—ด cities๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. 0 ๋”๋ณด๊ธฐ
2018 ์นด์นด์˜ค ์ฝ”๋”ฉํ…Œ์ŠคํŠธ 1์ฐจ ๋น„๋ฐ€์ง€๋„ JS ๋ฌธ์ œํ’€์ด ๐Ÿ”—์ง์ ‘ ๋ฌธ์ œ ํ’€๋Ÿฌ๊ฐ€๊ธฐ ๋ฌธ์ œ ์ง€๋„๋Š” ํ•œ ๋ณ€์˜ ๊ธธ์ด๊ฐ€ n์ธ ์ •์‚ฌ๊ฐํ˜• ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ, ๊ฐ ์นธ์€ ๊ณต๋ฐฑ(" ") ๋˜๋Š”๋ฒฝ("#") ๋‘ ์ข…๋ฅ˜๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ์ „์ฒด ์ง€๋„๋Š” ๋‘ ์žฅ์˜ ์ง€๋„๋ฅผ ๊ฒน์ณ์„œ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. ๊ฐ๊ฐ ์ง€๋„1๊ณผ ์ง€๋„2๋ผ๊ณ  ํ•˜์ž. ์ง€๋„1 ๋˜๋Š” ์ง€๋„2 ์ค‘ ์–ด๋Š ํ•˜๋‚˜๋ผ๋„ ๋ฒฝ์ธ ๋ถ€๋ถ„์€ ์ „์ฒด ์ง€๋„์—์„œ๋„ ๋ฒฝ์ด๋‹ค. ์ง€๋„ 1๊ณผ ์ง€๋„ 2์—์„œ ๋ชจ๋‘ ๊ณต๋ฐฑ์ธ ๋ถ€๋ถ„์€ ์ „์ฒด ์ง€๋„์—์„œ๋„ ๊ณต๋ฐฑ์ด๋‹ค. ์ง€๋„ 1๊ณผ ์ง€๋„ 2๋Š” ๊ฐ๊ฐ ์ •์ˆ˜ ๋ฐฐ์—ด๋กœ ์•”ํ˜ธํ™”๋˜์–ด ์žˆ๋‹ค. ์•”ํ˜ธํ™”๋œ ๋ฐฐ์—ด์€ ์ง€๋„์˜ ๊ฐ ๊ฐ€๋กœ์ค„์—์„œ ๋ฒฝ ๋ถ€๋ถ„์„ 1, ๊ณต๋ฐฑ ๋ถ€๋ถ„์„ 0์œผ๋กœ ๋ถ€ํ˜ธํ™”ํ–ˆ์„ ๋•Œ ์–ป์–ด์ง€๋Š” ์ด์ง„์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์˜ ๋ฐฐ์—ด์ด๋‹ค. ๋ฌธ์ œํ’€์ด 1. ๊ฐ ๋ฐฐ์—ด์˜ i๋ฒˆ์งธ ์ •์ˆ˜๋ฅผ ์ด์ง„์ˆ˜๋กœ ๋ฐ”๊พธ์—ˆ์„ ๋–„ 01 ๊ณผ 11๋ผ๋ฉด ํ•ด๋…๋œ ์ˆซ์ž๋Š” ์ด์ง„์ˆ˜ 11์ด๋‹ค. ์ฆ‰, OR ์—ฐ์‚ฐ์„ ํ™œ์šฉํ•˜๋ฉด ๋œ๋‹ค. 2. .. ๋”๋ณด๊ธฐ
๋งคํŠธ๋ฆญ์Šค ํšŒ์ „์‹œํ‚ค๊ธฐ leetcode 48. Rotate Image ๋ฌธ์ œํ’€์ด ๋ฌธ์ œ: ์ฃผ์–ด์ง„ ํ–‰๋ ฌ์„ ์‹œ๊ณ„๋ฐ˜ํ–ฅ์œผ๋กœ 90๋„ ํšŒ์ „์‹œ์ผœ๋ผ. ์•„์ด๋””์–ด ํšŒ์ „๋œ ํ–‰๋ ฌ์˜ ์›์†Œ๋“ค์ด ์›๋ž˜ ์–ด๋–ค ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ๋Š”์ง€ ๊ด€์ฐฐํ•ด๋ณด๋ฉด ํžŒํŠธ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. ์›๋ณธ |00|01|02| |10|11|12| |20|21|22| ํšŒ์ „๋œ ํ–‰๋ ฌ |20|10|00| |21|11|01| |22|12|02| ์ฒซ๋ฒˆ์งธ ํ–‰์˜ ์›์†Œ๋“ค์€ ๋ชจ๋‘ ์ฒซ๋ฒˆ์งธ ์—ด์—์„œ ์™”๋‹ค. ์—ด๊ณผ ํ–‰์ด ๋ฐ”๋€Œ์—ˆ๋‹ค. ๊ฐ ํ–‰์˜ ์›์†Œ๋“ค์€ [2x, 1x, 0x] ์—ญ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด์žˆ๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์›๋ณธ |00|01|02| |10|11|12| |20|21|22| ์ „์น˜ ํ–‰๋ ฌ |00|10|20| |01|11|21| |02|12|22| ๊ทธ๋ฆฌ๊ณ ๋‚˜์„œ ๊ฐ ํ–‰์ด ๋ฐ˜์ „๋œ ํ–‰๋ ฌ |20|10|00| |21|11|01| |22|12|02.. ๋”๋ณด๊ธฐ
๋’ค์—์„œ n๋ฒˆ์งธ ๋…ธ๋“œ ์‚ญ์ œํ•˜๊ธฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ 1. ํฌ์ธํ„ฐ hare๋ฅผ n๋งŒํผ ๋จผ์ € ์ด๋™์‹œํ‚จ๋‹ค. 2. curr์™€ hare๋ฅผ ๊ฐ™์€ ์†๋„๋กœ ์ด๋™์‹œํ‚จ๋‹ค. ์ด๋•Œ curr๋Š” ํ—ค๋“œ์—์„œ hare๋Š” n๋ฒˆ์งธ ๋…ธ๋“œ์—์„œ ์ถœ๋ฐœํ•œ๋‹ค. 3. curr๊ณผ hare์‚ฌ์ด์—๋Š” n๊ฐœ์˜ ๋…ธ๋“œ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ, hare๊ฐ€ ๋’ค์—์„œ๋ถ€ํ„ฐ 1๋ฒˆ์งธ์— ์žˆ์„ ๋•Œ curr๋Š” ๋’ค์—์„œ๋ถ€ํ„ฐ n+1๋ฒˆ์งธ ๋…ธ๋“œ์— ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ curr.next๊ฐ€ ๋‹ค์Œ๋‹ค์Œ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฅดํ‚ค๋„๋ก ์ˆ˜์ •ํ•˜์—ฌ n๋ฒˆ์งธ ๋…ธ๋“œ๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค. ์—ฃ์ง€ ์ผ€์ด์Šค n์ด ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด์™€ ๊ฐ™์„๋•Œ๊ฐ€ ์—ฃ์ง€์ผ€์ด์Šค์ด๋‹ค. curr์˜ ๋‹ค์Œ ๋…ธ๋“œ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋ฆฌ์ŠคํŠธ์˜ ์ฒซ๋ฒˆ์งธ ๋…ธ๋“œ๋ฅผ ์‚ญ์ œํ•ด์•ผํ•ด์•ผํ•œ๋‹ค. ๊ธธ์ด๊ฐ€ n์ธ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์˜ ํ—ค๋“œ์—์„œ n๋ฒˆ ๋–จ์–ด์ง„ ๊ณณ์€ null์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ hare๊ฐ€ null๊ฐ’์ธ์ง€์— ๋”ฐ๋ผ ์ด๋ฅผ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ณต์žก๋„ ๋ถ„์„ ์‹œ๊ฐ„๋ณต์žก.. ๋”๋ณด๊ธฐ
์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ๊ต์ฐจ์ ์ฐพ๊ธฐ 2 leetcode 160. Intersection of Two Linked Lists ๋ฌธ์ œํ’€์ด. ๋ฌธ์ œ: ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ฒซ ๊ต์ฐจ์ ์„ ์ฐพ์•„๋ผ. ๋‘ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์˜ ๋…ธ๋“œ ์ˆ˜ ์ฐจ์ด 1. ๋‘ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด๋ฅผ ์žฐ๋‹ค. 2. ๊ธธ์ด์ฐจ์ด๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ทธ๋งŒํผ ๋‘˜ ์ค‘ ๋” ๊ธด ๋ฆฌ์ŠคํŠธ์˜ ํฌ์ธํ„ฐ๋ฅผ ์Šคํ‚ตํ•œ๋‹ค. 3. ๊ธธ์ด๊ฐ€ ๊ฐ™์€ ๋‘ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์˜ ํฌ์ธํ„ฐ๋ฅผ ๊ฐ™์€ ์†๋„๋กœ ์ด๋™์‹œํ‚ค๋ฉฐ ๋น„๊ตํ–ˆ์„๋•Œ, ์„œ๋กœ ๊ฐ™์€ ๋…ธ๋“œ๊ฐ€ ์ฒซ ๊ต์ฐจ์ ์ด๋‹ค. Time Complexity: O(A+B) Space Complexity: O(1) ์ด ๋ฐฉ๋ฒ•์œผ๋กœ ํ†ต๊ณผ๋ฅผ ํ–ˆ์œผ๋‚˜ ์ฒซ ๊ต์ฐจ์ ๋ฅผ ์ง€๋‚œ ํ›„ ๋…ธ๋“œ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅผ ๊ฒฝ์šฐ๋ฅผ ํฌํ•จํ•˜์ง€ ๋ชปํ•œ๋‹ค. ๋”๋ณด๊ธฐ
์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์˜ ๊ต์ฐจ์  ์ฐพ๊ธฐ leetcode 160. Intersection of Two Linked Lists ๋ฌธ์ œํ’€์ด. ๋ฌธ์ œ: ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ฒซ ๊ต์ฐจ์ ์„ ์ฐพ์•„๋ผ. Hash Set 1. A ๋ฆฌ์ŠคํŠธ๋ฅผ ๋จผ์ € ์ˆœํšŒํ•˜๋ฉฐ hash set์— ๋…ธ๋“œ๋“ค์„ ์ €์žฅํ•œ๋‹ค. 2. B ๋ฆฌ์ŠคํŠธ ์ˆœํšŒํ•˜๋ฉฐ ๋…ธ๋“œ๋“ค์ด ์ด๋ฏธ hash set์— ์ €์žฅ๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์ด๋ฏธ ์ €์žฅ๋˜์–ด ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ๋…ธ๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 3. ๋ฌด์‚ฌํžˆ B๋ฆฌ์ŠคํŠธ ์ˆœํšŒ๋ฅผ ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ๊นŒ์ง€ ๋งˆ์ณค๋‹ค๋ฉด, ๊ต์ฐจ๋˜๋Š” ๋…ธ๋“œ๊ฐ€ ์—†๋‹ค๋Š” ๋œป์ด๋ฏ€๋กœ null์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. Floyd's Tortoise and Hare algorithm ์ด ๋ฌธ์ œ ๋˜ํ•œ ํ† ๋ผ์™€ ๊ฑฐ๋ถ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉ์„ O(1)์œผ๋กœ ์ค„์—ฌ์ค„ ์ˆ˜ ์žˆ๋‹ค. Time Complexity: O(N) Space Complexity: O.. ๋”๋ณด๊ธฐ
์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ์‚ฌ์ดํด์ด ์‹œ์ž‘๋˜๋Š” ๋…ธ๋“œ ์ฐพ๊ธฐ leetcode 142. Linked List Cycle II ๋ฌธ์ œํ’€์ด ๋ฌธ์ œ: ์ฃผ์–ด์ง„ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์—์„œ ์‚ฌ์ดํด์ด ์—†๋‹ค๋ฉด null์„, ์žˆ๋‹ค๋ฉด ์‚ฌ์ดํด์ด ์‹œ์ž‘๋˜๋Š” ๋…ธ๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ผ. 1. ์ฃผ์–ด์ง„ ๋…ธ๋“œ๋ฅผ Hash Set์— ์ถ”๊ฐ€ํ•˜๋ฉด ์ˆœํšŒํ•œ๋‹ค. 2. ์ด๋ฏธ Hash Set์— ์žˆ๋Š” ๋…ธ๋“œ๋ฅผ ๋งŒ๋‚˜๋ฉด ์‚ฌ์ดํด์ด ์‹œ์ž‘๋œ ๊ฒƒ์ด๋ฏ€๋กœ ํ•ด๋‹น ๋…ธ๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 3. ๋ฌด์‚ฌํžˆ ์ˆœํšŒ๋ฅผ ๋๋ƒˆ์œผ๋ฉด ์‚ฌ์ดํด์ด ์—†๋Š” ๊ฒƒ ์ด๋ฏ€๋กœ, null์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 141๋ฒˆ ์‚ฌ์ดํด ๊ฐ์ง€ํ•˜๊ธฐ ๋ฌธ์ œ์—์„œ ํ™œ์šฉํ•œ ํˆฌ ํฌ์ธํ„ฐ ํ…Œํฌ๋‹‰์„ ํ™œ์šฉํ•˜์—ฌ ๊ณต๊ฐ„์„ O(1)๋งŒํผ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. leetcode 141. Linked List Cycle ์‚ฌ์ดํด ๊ฐ์ง€ํ•˜๊ธฐ leetcode 141. Linked List Cycle ๋ฌธ์ œํ’€์ด ๋ฌธ์ œ: ์ฃผ์–ด์ง„ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์— ์‚ฌ์ดํด์ด ์žˆ๋‹ค๋ฉด true๋ฅผ ์—†๋‹ค๋ฉด .. ๋”๋ณด๊ธฐ
์‚ฌ์ดํด ๊ฐ์ง€ํ•˜๊ธฐ leetcode 141. Linked List Cycle ๋ฌธ์ œํ’€์ด ๋ฌธ์ œ: ์ฃผ์–ด์ง„ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์— ์‚ฌ์ดํด์ด ์žˆ๋‹ค๋ฉด true๋ฅผ ์—†๋‹ค๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ผ Hash Set 1. ๊ฐ ๋…ธ๋“œ๋ฅผ set์— ์ถ”๊ฐ€ํ•ด๊ฐ€๋ฉฐ ์ˆœํšŒํ•œ๋‹ค. 2. ๋‹ค์Œ์— ์ˆœํšŒํ•  ๋…ธ๋“œ๊ฐ€ ์ด๋ฏธ set์— ๋“ค์–ด์žˆ๋‹ค๋ฉด true๋ฅผ ๋ฐ˜ํ™˜. 3. ์ˆœํšŒ๋ฅผ ๋ฌด์‚ฌํžˆ ๋งˆ์ณค๋‹ค๋ฉด ์‚ฌ์ดํด์ด ์—†๋Š” ๊ฒƒ์ด๋ฏ€๋กœ false๋ฅผ ๋ฐ˜ํ™˜. ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ set์— ์ €์žฅํ•˜๋ ค๋ฉด O(N)๊ณต๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค. set์— ๋…ธ๋“œ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ ๋Œ€์‹ , ๋…ธ๋“œ์˜ val๊ฐ’์— ์ด๋ฏธ ๋ฐฉ๋ฌธํ–ˆ์Œ์„ ํ‘œ์‹œํ•œ๋‹ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์•„๋‚„ ์ˆ˜์žˆ๋‹ค. Two Pointer ํˆฌ ํฌ์ธํ„ฐ ํ…Œํฌ๋‹‰์„ ํ™œ์šฉํ•ด์„œ๋„ ๊ณต๊ฐ„๋ณต์žก๋„๋ฅผ O(1)์œผ๋กœ ์ œํ•œํ•  ์ˆ˜ ์žˆ๋‹ค. ํˆฌ ํฌ์ธํ„ฐ ํ…Œํฌ๋‹‰์€ ํ•œ ํฌ์ธํ„ฐ๋Š” ๋” ๋น ๋ฅด๊ฒŒ ๋˜ ๋‹ค๋ฅธ ํฌ์ธํ„ฐ๋Š” ๋” ๋Š๋ฆฌ๊ฒŒ ์›€์ง์ด๋„๋กํ•˜๋Š” ํ…Œํฌ๋‹‰์„ ๋งํ•œ๋‹ค. .. ๋”๋ณด๊ธฐ