[BOJ/λ°±μ€€] 1043 거짓말 - 파이썬

2022. 8. 18. 15:13Β·πŸ’» μ•Œκ³ λ¦¬μ¦˜/PS

문제

진싀을 μ•Œκ³  μžˆλŠ” μ‚¬λžŒμ΄ νŒŒν‹°μ— μ˜€λŠ” 경우, 진싀을 μ•Œκ³  μžˆλŠ” μ‚¬λžŒκ³Ό 같은 νŒŒν‹°μ— μ™”λ˜ μ‚¬λžŒμ΄ λ‹€λ₯Έ νŒŒν‹°μ— μ˜€λŠ” 경우, 거기에 μžˆλŠ” λ‹€λ₯Έ μ‚¬λžŒμ΄ μ°Έμ„ν•˜λŠ” 또 λ‹€λ₯Έ νŒŒν‹°μ˜ 경우 등이 μ‘΄μž¬ν•˜λŠ” μƒν™©μ—μ„œ 지민이가 κ³Όμž₯된 이야기λ₯Ό ν•  수 μžˆλŠ” νŒŒν‹° 수의 μ΅œλŒ“κ°’μ„ κ΅¬ν•˜λŠ” 문제.

 

 

λ¬Έμ œν’€μ΄

Union-Find μ•Œκ³ λ¦¬μ¦˜μœΌλ‘œ 풀이

지민이가 κ³Όμž₯된 이야기λ₯Ό ν•  수 μ—†λŠ” μ‚¬λžŒλ“€μ„ ν•˜λ‚˜μ˜ μ§‘ν•©μœΌλ‘œ ꡬ성

 

ffind ν•¨μˆ˜λ‘œ ν•΄λ‹Ή μ›μ†Œμ˜ parent μ›μ†Œλ₯Ό μ°ΎλŠ”λ‹€.

union ν•¨μˆ˜λ‘œ 진싀을 μ•„λŠ” μ‚¬λžŒλ“€κ³Ό 그와 같이 νŒŒν‹°μ— μ˜€λŠ” μ‚¬λžŒλ“€(연쇄적)을 ν•˜λ‚˜λ‘œ λ¬ΆλŠ”λ‹€.

- μž…λ ₯받은 두 μ›μ†Œκ°€ λͺ¨λ‘ 진싀을 μ•„λŠ” μ‚¬λžŒ -> λ³€ν™” X

- λ‘˜ 쀑 ν•œ μ›μ†Œκ°€ 진싀을 μ•„λŠ” μ‚¬λžŒ -> 진싀을 μ•„λŠ” μ‚¬λžŒμ„ λΆ€λͺ¨λ‘œ κ°±μ‹ 

- λ‘˜ λ‹€ 진싀을 μ•„λŠ” μ‚¬λžŒμ΄ μ•„λ‹˜ -> λŒ€μ†Œ 관계에 따라 λΆ€λͺ¨ 관계 λΆ€μ—¬ (후에 갱신될 수 μžˆμœΌλ―€λ‘œ)

 

 

μ½”λ“œ

import sys
input=sys.stdin.readline


def find(parent,x):
    if x!=parent[x]:
        parent[x]=find(parent,parent[x])
    return parent[x]

def union(parent,a,b,mem):
    a=find(parent,a)
    b=find(parent,b)

    if a in mem and b in mem:
        return

    if a in mem:
        parent[b]=a
    elif b in mem:
        parent[a]=b

    else:
        if a<b:
            parent[b]=a
        else:
            parent[a]=b

    
n,m=map(int,input().split())

b=list(map(int,input().split()))[1:]
##μ•„λŠ” μ‚¬λžŒ 

g=[]
parent=list(range(n+1))

for i in range(m):
    temp=list(map(int,input().split()))
    people=temp[1:]
    
    for j in range(temp[0]-1):
        union(parent,people[j],people[j+1],b)
    g.append(temp[1:])
    
    
result=0

for i in g:
    for j in range(len(i)):
        if find(parent,i[j]) in b:
            break
    else:
        result+=1

print(result)

 

 

기타

λ§Œμ•½ 집합을 μ΄μš©ν•˜μ—¬ ν‘Όλ‹€λ©΄ 순차적으둜 νƒμƒ‰ν•˜λŠ” 경우, 후에 μƒˆλ‘­κ²Œ ν•˜λ‚˜λ‘œ 묢이게 λ˜λŠ” κ²½μš°κ°€ λ°œμƒν•  수 μžˆμ–΄μ„œ λ‹€μ‹œ λͺ¨λ“  νŒŒν‹°λ₯Ό μž¬νƒμƒ‰ν•΄μ•Όν•˜λ―€λ‘œ λͺ¨λ“  경우λ₯Ό 탐색할 수 μžˆμ–΄μ•Όν•œλ‹€. (그에 λ”°λ₯Έ μƒˆλ‘œμš΄ κ²½μš°κ°€ λ°œμƒ μ‹œ 또 λ‹€μ‹œ 탐색)

  ->μ‹œκ°„ μ΄ˆκ³Όμ— 걸리지 μ•Šλ„λ‘ 주의

'πŸ’» μ•Œκ³ λ¦¬μ¦˜ > PS' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[BOJ/λ°±μ€€] 14907 ν”„λ‘œμ νŠΈ μŠ€μΌ€μ€„λ§ - 파이썬  (2) 2023.11.29
[BOJ/λ°±μ€€] 9742 μˆœμ—΄ - 파이썬  (0) 2022.05.11
[BOJ/λ°±μ€€] 2160 그림비ꡐ - 파이썬  (0) 2022.05.11
[λ°±μ€€/BOJ] 1449 수리곡 ν•­μŠΉ - 파이썬  (0) 2022.05.08
[2017 μΉ΄μΉ΄μ˜€μ½”λ“œ μ˜ˆμ„ ] 컬러링뢁 - 파이썬  (0) 2022.03.16
'πŸ’» μ•Œκ³ λ¦¬μ¦˜/PS' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [BOJ/λ°±μ€€] 14907 ν”„λ‘œμ νŠΈ μŠ€μΌ€μ€„λ§ - 파이썬
  • [BOJ/λ°±μ€€] 9742 μˆœμ—΄ - 파이썬
  • [BOJ/λ°±μ€€] 2160 그림비ꡐ - 파이썬
  • [λ°±μ€€/BOJ] 1449 수리곡 ν•­μŠΉ - 파이썬
.밍.
.밍.
  • .밍.
    Do IT
    .밍.
  • 전체
    였늘
    μ–΄μ œ
    • All (40)
      • πŸ’» μ•Œκ³ λ¦¬μ¦˜ (21)
        • PS (16)
        • SQL (4)
        • 이둠 (5)
      • 🎈capstone (2)
      • πŸ’ͺBackend (12)
        • Django (8)
        • Spring (4)
  • λΈ”λ‘œκ·Έ 메뉴

    • ν™ˆ
    • νƒœκ·Έ
    • λ°©λͺ…둝
  • 링크

  • 곡지사항

  • 인기 κΈ€

  • νƒœκ·Έ

    μ„œλΈŒμΏΌλ¦¬
    programmers
    μŠ€μΌ€μ€„λŸ¬
    windowν•¨μˆ˜
    apiresponse
    파이썬
    PS
    Django
    SQL
    python
    λ°±μ€€
    μ•Œκ³ λ¦¬μ¦˜
    μŠ€ν”„λ§λ°°μΉ˜
    μž¬κ·€
    bruteforce
    MYSQL
    Batch
    λ¬Έμ œν’€μ΄
    BFS
    springscheduler
    μžλ°”
    μ½”ν…Œ
    ETL
    닀쀑쑰인
    resposneentity
    BOJ
    ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€
    responsecustomclass
    μ‘λ‹΅ν˜•μ‹
    crud
  • 졜근 λŒ“κΈ€

  • 졜근 κΈ€

  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.3
.밍.
[BOJ/λ°±μ€€] 1043 거짓말 - 파이썬
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”