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

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

์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์˜ ๊ต์ฐจ์  ์ฐพ๊ธฐ

leetcode 160. Intersection of Two Linked Lists ๋ฌธ์ œํ’€์ด.

๋ฌธ์ œ: ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ฒซ ๊ต์ฐจ์ ์„ ์ฐพ์•„๋ผ.


A์™€ B ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ c1๋…ธ๋“œ๋ฅผ ๋ฐ˜ํ™˜

 

๊ต์ฐจ๋˜๋Š” ๋…ธ๋“œ๊ฐ€ ์—†๋‹ค๋ฉด null์„ ๋ฐ˜ํ™˜

 

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(1)

 

1. A๋ฆฌ์ŠคํŠธ์˜ ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ๊ฐ€ B๋ฆฌ์ŠคํŠธ์˜ ์ฒซ๋ฒˆ์งธ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฅดํ‚ค๋„๋กํ•œ๋‹ค.

   ๋งŒ์•ฝ ๋‘ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๊ฐ€ ๊ต์ฐจ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด A+B๋ฆฌ์ŠคํŠธ๋Š” ์‚ฌ์ดํด์„ ๊ฐ€์ง€๊ณ  ์žˆ์„ ๊ฒƒ.

A๋ฆฌ์ŠคํŠธ tail node๊ฐ€ B๋ฆฌ์ŠคํŠธ head๋ฅผ ๊ฐ€๋ฅดํ‚ค๊ฒŒํ•˜๊ธฐ ์˜ˆ์‹œ

2. ๊ฐ iteration๋งˆ๋‹ค ๊ฑฐ๋ถ์ดํฌ์ธํ„ฐ๋ฅผ 1๋ฒˆ ํ† ๋ผ ํฌ์ธํ„ฐ๋ฅผ 2๋ฒˆ์”ฉ ์›€์ง์—ฌ ๊ต์ฐจ์ ์„ ์ฐพ๋Š”๋‹ค.

   ๊ต์ฐจ์ ์ด ์—†๋‹ค๋ฉด ํ† ๋ผ ํฌ์ธํ„ฐ๊ฐ€ null๊ฐ’์ด ๋˜์–ด ๋ฐ˜๋ณต๋ฌธ์„ ๋น ์ ธ๋‚˜์˜ค๊ฒŒ๋œ๋‹ค.

๊ฑฐ๋ถ์ด๊ฐ€ F๋งŒํผ ์ด๋™ํ–ˆ์„ ๋•Œ => F+C-h๋งŒํผ ์ด๋™ํ–ˆ์„ ๋•Œ

3. ๊ต์ฐจ๋˜๋Š” ๋…ธ๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด A+B๋ฆฌ์ŠคํŠธ์˜ ํ—ค๋“œ์™€ ์ฒซ ๊ต์ฐจ์ ์„ ๊ฐ ๊ฐ™์€ ์†๋„๋กœ ์ด๋™์‹œ์ผœ ์‚ฌ์ดํด์ด ์‹œ์ž‘๋˜๋Š” ๋…ธ๋“œ๋ฅผ ์ฐพ๋Š”๋‹ค. (๊ต์ฐจ๋˜๋Š” ๋…ธ๋“œ๊ฐ€ ์—†๋‹ค๋ฉด ์ด ๋‹จ๊ณ„๋Š” ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค)

F=b ๋“ฑ์‹์ด ์„ฑ๋ฆฝํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฉ๋ฒ• 3์œผ๋กœ ์‚ฌ์ดํด์ด ์‹œ์ž‘๋˜๋Š” ์ฒซ ๋ถ€๋ถ„์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. 

4. ๋‹ต์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ์ „์—๋Š” A๋ฆฌ์ŠคํŠธ์˜ ํ…Œ์ผ ๋…ธ๋“œ๊ฐ€ null์„ ๊ฐ€๋ฅดํ‚ค๋„๋ก ์ˆ˜์ •ํ•œ๋‹ค.

   (์กฐ์ž‘ํ•œ ๋ถ€๋ถ„์„ ์›์ƒ๋ณต๊ตฌ ํ•˜๋Š” ๊ฒƒ)