hugDog
Android DevLog
hugDog
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๐Ÿ™Œ Hello? (162)
    • ๐Ÿงฉ์•ˆ๋“œ๋กœ์ด๋“œ (12)
      • ๊ฐœ๋… ์ •๋ฆฌ (5)
      • ๋ฒ„๊ทธ ํ•ด๊ฒฐ (4)
      • ๊ธฐํƒ€ (3)
    • ๐Ÿ”์•Œ๊ณ ๋ฆฌ์ฆ˜ (54)
      • ๊ฐœ๋… (0)
      • ๋ฐฑ์ค€ (48)
      • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (6)
    • ๐Ÿ“„๊ฐœ๋ฐœ ์ผ์ง€ (0)
      • FINPO (0)
    • ๐Ÿ”คํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (71)
      • C++ ์ •๋ฆฌ (49)
      • C++๊ธฐ์ดˆํ”Œ๋Ÿฌ์Šค ์—ฐ์Šต๋ฌธ์ œ (20)
      • Kotlin (2)
    • โญProject (1)
    • ๐ŸšดTIL (13)
      • Clean Code (13)
    • ๐Ÿšฉ๊ธฐํƒ€ (9)
      • ๋ชฉํ‘œ (6)
      • ์ผ์ƒ (3)
      • ๋ฌธ์„œ (0)

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
hugDog

Android DevLog

[Python/ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 9466๋ฒˆ: ํ…€ ํ”„๋กœ์ ํŠธ
๐Ÿ”์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€

[Python/ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 9466๋ฒˆ: ํ…€ ํ”„๋กœ์ ํŠธ

2022. 1. 15. 15:37
728x90

๋ฌธ์ œ

 

ํ’€์ด

์‚ฌ์ดํด์„ ํŒ๋ณ„ํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

 

1. ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์„ parent ๋ฐฐ์—ด์ด๋ผ ํ•˜์ž.

 

2. ์‚ฌ์ดํด์„ ํŒ๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ์ด๋•Œ๊นŒ์ง€ ๋ฐฉ๋ฌธํ•œ ๋…ธ๋“œ๋ฅผ cycle ๋ฐฐ์—ด์— ์ €์žฅ,

๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด visited ๋ฐฐ์—ด์„ ์ƒ์„ฑ

 

3. 1๋ฒˆ ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ–ˆ์„ ๋•Œ

 

4. 1๋ฒˆ ๋…ธ๋“œ์™€ ์—ฐ๊ฒฐ๋œ 3๋ฒˆ ๋…ธ๋“œ ๋ฐฉ๋ฌธ

 

๊ฐ ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•˜๊ณ , ๊ทธ ๋…ธ๋“œ์™€ ์ด์–ด์ง„ ๋…ธ๋“œ๋ฅผ ๊ณ„์† ๋ฐฉ๋ฌธํ•œ๋‹ค.

๋งŒ์•ฝ ์ด๋ฏธ ๋ฐฉ๋ฌธํ•œ ๋…ธ๋“œ์ด๊ณ  ์‚ฌ์ดํด ๋ฐฐ์—ด์— ํ•ด๋‹น ๋…ธ๋“œ๊ฐ€ ์กด์žฌํ•˜๋ฉด ์‚ฌ์ดํด์ด ํ˜•์„ฑ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

์œ„ ๊ณผ์ •์„ ์ง์ ‘ ํ•ด๋ณด๋ฉด ์ดํ•ด๊ฐ€ ์‰ฝ๋‹ค.

 

์ฝ”๋“œ

import sys
sys.setrecursionlimit(10**7)
input = sys.stdin.readline

def dfs(st):
    global team
    visited[st] = True
    cycle.append(st)
    
    next = parent[st]
    if visited[next]:
        if next in cycle:
            team += len(cycle[cycle.index(next):])
        return
    
    dfs(next)

t = int(input())

for _ in range(t):
    n = int(input())
    parent = [0] + list(map(int, input().split()))
    visited = [False] * (n + 1)
    team = 0
    for i in range(1, n + 1):
        if not visited[i]:
            cycle = []
            dfs(i)
    print(n - team)

 

๋งˆ๋ฌด๋ฆฌ

์‚ฝ์งˆํ•˜๋‹ค๊ฐ€ ๋„์ €ํžˆ ๋ชจ๋ฅด๊ฒ ์–ด์„œ ๊ตฌ๊ธ€๋ง ํ–ˆ๋‹ค..

์‚ฌ์ดํด ํŒ๋ณ„... ์–ด๋ ต๋‹ค.

์ดํ•ด๋Š” ํ–ˆ์ง€๋งŒ ์™„์ „ํžˆ ๋‚ด ๊ฑธ๋กœ ๋งŒ๋“ค์ง„ ๋ชปํ–ˆ๋‹ค. 

 

728x90
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ (์ƒˆ์ฐฝ์—ด๋ฆผ)
    '๐Ÿ”์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [Python/ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 2573๋ฒˆ: ๋น™์‚ฐ
    • [Python/ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 2668๋ฒˆ: ์ˆซ์ž๊ณ ๋ฅด๊ธฐ
    • [Python/ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 16929๋ฒˆ: Tow Dots
    • [Python/ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 1987๋ฒˆ: ์•ŒํŒŒ๋ฒณ
    hugDog
    hugDog
    ์•ˆ๋“œ๋กœ์ด๋“œ ๊ณต๋ถ€ ์ค‘์ธ ํ•™์ƒ์ž…๋‹ˆ๋‹ค!

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”