Skip to content

Commit 550782d

Browse files
Create taurus09318976.py
1 parent 1ad4b61 commit 550782d

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
'''
2+
*๋ฌธ์ œ์˜ ์˜๋„ :
3+
์ด ๋ฌธ์ œ๋Š” ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์— ์‚ฌ์ดํด์ด ์žˆ๋Š”์ง€ ํŒ๋‹จํ•˜๋Š” ๋ฌธ์ œ์ž„.
4+
์‚ฌ์ดํด์ด๋ž€ ์–ด๋–ค ๋…ธ๋“œ์—์„œ ์‹œ์ž‘ํ•ด์„œ next ํฌ์ธํ„ฐ๋ฅผ ๊ณ„์† ์ด๋™์‹œํ‚ค๋‹ค ๋‹ค์‹œ ์›๋ž˜ ๋…ธ๋“œ๋กœ ๋Œ์•„์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ๋งํ•จ
5+
6+
*ํ•ด๊ฒฐ๋ฐฉ๋ฒ• : ํ† ๋ผ์™€ ๊ฑฐ๋ถ์ด ์•Œ๊ณ ๋ฆฌ๋“ฌ์„ ์‚ฌ์šฉํ•จ
7+
๋‘ ๊ฐœ์˜ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ๋А๋ฆฐ ํฌ์ธํ„ฐ(๊ฑฐ๋ถ์ด)๋Š” ํ•œ ๋ฒˆ์— ํ•œ์นธ์”ฉ ์ด๋™,
8+
๋น ๋ฅธ ํฌ์ธํ„ฐ(ํ† ๋ผ)๋Š” ํ•œ ๋ฒˆ์— ๋‘ ์นธ์”ฉ ์ด๋™, ์‚ฌ์ดํด์ด ์กด์žฌํ•œ๋‹ค๋ฉด ๋น ๋ฅธ ํฌ์ธํ„ฐ๊ฐ€ ๋А๋ฆฐ ํฌ์ธํ„ฐ๋ฅผ ๋”ฐ๋ผ์žก๊ฒŒ ๋จ.
9+
10+
*์‹œ๊ฐ„ ๋ณต์žก๋„์™€ ๊ณต๊ฐ„ ๋ณต์žก๋„
11+
์‹œ๊ฐ„ ๋ณต์žก๋„: O(n)
12+
์‚ฌ์ดํด์ด ์—†๋Š” ๊ฒฝ์šฐ: ๋น ๋ฅธ ํฌ์ธํ„ฐ๊ฐ€ n/2๋ฒˆ ์ด๋™ํ•˜์—ฌ ๋์— ๋„๋‹ฌํ•˜๋ฏ€๋กœ O(n)
13+
์‚ฌ์ดํด์ด ์žˆ๋Š” ๊ฒฝ์šฐ: ์ตœ์•…์˜ ๊ฒฝ์šฐ ์‚ฌ์ดํด ๋‚ด์—์„œ ๋А๋ฆฐ ํฌ์ธํ„ฐ์™€ ๋น ๋ฅธ ํฌ์ธํ„ฐ๊ฐ€ ๋งŒ๋‚  ๋•Œ๊นŒ์ง€ ์‚ฌ์ดํด ๊ธธ์ด๋งŒํผ ์ถ”๊ฐ€๋กœ ์ด๋™ํ•˜์ง€๋งŒ, ์ „์ฒด์ ์œผ๋กœ๋Š” ์—ฌ์ „ํžˆ O(n)
14+
15+
๊ณต๊ฐ„ ๋ณต์žก๋„: O(1)
16+
๋‘ ๊ฐœ์˜ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๋งŒ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์ƒ์ˆ˜ ๊ณต๊ฐ„๋งŒ ํ•„์š”
17+
์ž…๋ ฅ ํฌ๊ธฐ์— ๊ด€๊ณ„์—†์ด ์ผ์ •ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ
18+
19+
'''
20+
21+
class Solution:
22+
def hasCycle(self, head: Optional[ListNode]) -> bool:
23+
# ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋น„์–ด ์žˆ๊ฑฐ๋‚˜ ๋…ธ๋“œ๊ฐ€ ํ•˜๋‚˜๋ฟ์ด๋ฉด ์‚ฌ์ดํด์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ False ๋ฐ˜ํ™˜
24+
if not head or not head.next:
25+
return False
26+
27+
# ๋‘ ํฌ์ธํ„ฐ๋ฅผ ๋ชจ๋‘ head์—์„œ ์‹œ์ž‘ํ•˜๋„๋ก ์ดˆ๊ธฐํ™”
28+
slow = head # ๋А๋ฆฐ ํฌ์ธํ„ฐ (๊ฑฐ๋ถ์ด)
29+
fast = head # ๋น ๋ฅธ ํฌ์ธํ„ฐ (ํ† ๋ผ)
30+
31+
# ๋น ๋ฅธ ํฌ์ธํ„ฐ๊ฐ€ ๋‘ ์นธ์”ฉ ์ด๋™ํ•˜๋ฏ€๋กœ, fast์™€ fast.next ๋ชจ๋‘ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธ
32+
while fast and fast.next:
33+
slow = slow.next # ๋А๋ฆฐ ํฌ์ธํ„ฐ๋Š” ํ•œ ์นธ์”ฉ ์ด๋™
34+
fast = fast.next.next # ๋น ๋ฅธ ํฌ์ธํ„ฐ๋Š” ๋‘ ์นธ์”ฉ ์ด๋™
35+
36+
# ๋‘ ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ™์€ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋ฉด ์‚ฌ์ดํด์ด ์กด์žฌํ•จ์„ ์˜๋ฏธ
37+
if slow == fast:
38+
return True
39+
40+
# ๋น ๋ฅธ ํฌ์ธํ„ฐ๊ฐ€ ๋์— ๋„๋‹ฌํ•˜๋ฉด ์‚ฌ์ดํด์ด ์—†๋‹ค๋Š” ์˜๋ฏธ
41+
return False
42+
43+

0 commit comments

Comments
ย (0)