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

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

์‚ฌ์ดํด ๊ฐ์ง€ํ•˜๊ธฐ

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)์œผ๋กœ ์ œํ•œํ•  ์ˆ˜ ์žˆ๋‹ค.

ํˆฌ ํฌ์ธํ„ฐ ํ…Œํฌ๋‹‰์€ ํ•œ ํฌ์ธํ„ฐ๋Š” ๋” ๋น ๋ฅด๊ฒŒ ๋˜ ๋‹ค๋ฅธ ํฌ์ธํ„ฐ๋Š” ๋” ๋Š๋ฆฌ๊ฒŒ ์›€์ง์ด๋„๋กํ•˜๋Š” ํ…Œํฌ๋‹‰์„ ๋งํ•œ๋‹ค.

 

 

์œ„ ์ฝ”๋“œ์—์„œ ๋Š๋ฆฐ ํฌ์ธํ„ฐ๋Š” ๊ฑฐ๋ถ์ด(turtle) ๋น ๋ฅธ ํฌ์ธํ„ฐ๋Š” ํ† ๋ผ(rabbit)๋กœ,

ํ† ๋ผ๋Š” ๊ฑฐ๋ถ์ด๋ณด๋‹ค ํ•œ ์Šคํ… ๋น ๋ฅธ ์œ„์น˜์—์„œ ์‹œ์ž‘ํ•˜์—ฌ 2๋ฐœ์ž๊ตญ์”ฉ ์›€์ง์ด๊ณ  ๊ฑฐ๋ถ์ด์€ 1๋ฐœ์ž๊ตญ์”ฉ ์›€์ง์ธ๋‹ค.

๋งŒ์•ฝ ์‚ฌ์ดํด์ด ์กด์žฌํ•œ๋‹ค๋ฉด ๊ฑฐ๋ถ์€ ๊ฒฐ๊ตญ ํ† ๋ผ๋ฅผ ๋งŒ๋‚˜๊ฒŒ๋œ๋‹ค. ๋‘˜์ด ๋งŒ๋‚œ๋‹ค๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ ,

๋‘˜์ด ๋งŒ๋‚˜์ง€์•Š๊ณ  ํ† ๋ผ๊ฐ€ ๋จผ์ € ๊ฒฐ์Šน์ ์— ๋„์ฐฉํ•œ๋‹ค๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋œ๋‹ค.

 

์‚ฌ๋ก€1. ๋งŒ์•ฝ ๊ฑฐ๋ถ์ด๊ฐ€ ํ† ๋ผ๋ณด๋‹ค ํ•œ ๋ฐœ์ž๊ตญ ์•ž์„œ์žˆ๋‹ค๋ฉด,
๊ทธ ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ ํ† ๋ผ๋Š” ๋‘ ๋ฐœ ์•ž ๊ฑฐ๋ถ์ด๋Š” ํ•œ ๋ฐœ ์•ž์œผ๋กœ ๋‚˜๊ฐ€ ๋‘˜์ด ๋งŒ๋‚˜๊ฒŒ ๋œ๋‹ค.

step 1 : [ ํ† ๋ผ, ๊ฑฐ๋ถ์ด, # ]

step 2 : [ #, #, ํ† ๋ผ์™€ ๊ฑฐ๋ถ์ด ]

 

์‚ฌ์ดํด์ด ์กด์žฌํ•  ๊ฒฝ์šฐ ํ† ๋ผ์™€ ๊ฑฐ๋ถ์ด๋Š” ๊ฒฐ๊ตญ ์‚ฌ๋ก€1์— ์ˆ˜๋ ดํ•  ๊ฒƒ์ด๋ฏ€๋กœ, ์‚ฌ์ดํด์ด ์กด์žฌํ•  ๋•Œ ๋‘˜์€ ์–ธ์  ๊ฐ€ ๋งŒ๋‚˜๊ฒŒ๋œ๋‹ค.

 

step 1 : [ #, ๊ฑฐ๋ถ์ด, #, ํ† ๋ผ ]

step 2 : [ #, ํ† ๋ผ, ๊ฑฐ๋ถ์ด, # ]

step 3 : [ #, #, #, ํ† ๋ผ์™€ ๊ฑฐ๋ถ์ด ]

 

step 1 : [ ํ† ๋ผ, #, #, #, #, ๊ฑฐ๋ถ์ด ]

step 2 : [ ๊ฑฐ๋ถ์ด, #, ํ† ๋ผ, #, #, # ]

step 3 : [ #, ๊ฑฐ๋ถ์ด, #, #, ํ† ๋ผ, # ]

step 4 : [ ํ† ๋ผ, #, ๊ฑฐ๋ถ์ด, #, #, # ]

step 5 : [ #, #, ํ† ๋ผ, ๊ฑฐ๋ถ์ด, #, # ]

step 5 : [ #, #, #, #, ํ† ๋ผ์™€ ๊ฑฐ๋ถ์ด, # ]