Skip to content

Conversation

@H0ngJu
Copy link
Collaborator

@H0ngJu H0ngJu commented Feb 3, 2025

๐Ÿ”— ๋ฌธ์ œ ๋งํฌ

๋ฃจ๋จธ

โœ”๏ธ ์†Œ์š”๋œ ์‹œ๊ฐ„

1.5H?

โœจ ์ˆ˜๋„ ์ฝ”๋“œ

image



์™€ ์ด ๋ฌธ์ œ ์ž˜๋ชป ์ฝ์–ด๊ฐ€์ง€๊ณ  ๋ช‡๋ฒˆ์„ ๋‹ค์‹œ ํ’€์—ˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค ... ใ…‹ใ…‹

๋งค๋ถ„ ๋ฃจ๋จธ๋ฅผ ๋ฏฟ๋Š” ์‚ฌ๋žŒ์€ ๋ชจ๋“  ์ฃผ๋ณ€์ธ์—๊ฒŒ ๋ฃจ๋จธ๋ฅผ ๋™์‹œ์— ํผํŠธ๋ฆฌ๋ฉฐ, ๊ตฐ์ค‘ ์† ์‚ฌ๋žŒ์€ ์ฃผ๋ณ€์ธ์˜ ์ ˆ๋ฐ˜ ์ด์ƒ์ด ๋ฃจ๋จธ๋ฅผ ๋ฏฟ์„ ๋•Œ ๋ณธ์ธ๋„ ๋ฃจ๋จธ๋ฅผ ๋ฏฟ๋Š”๋‹ค.

์ด ๋ถ€๋ถ„์„ ์ฃผ์˜ํ•ด์„œ ํ•ด์„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค..



7
2 4 0
1 3 0
2 5 0
1 5 6 0
3 4 6 7 0
4 5 7 0
5 6 0
1
6

์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์˜ค๋ฉด, 6๋ฒˆ์ด ์ตœ์ดˆ์œ ํฌ์ž์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด 6๋ฒˆ์˜ ์ฃผ๋ณ€์ธ์ธ 4, 5, 7์ด ๋™์‹œ์— ๋ฃจ๋จธ๋ฅผ ๋ฏฟ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ

4์˜ ์ฃผ๋ณ€์ธ์˜ ์ ˆ๋ฐ˜์ด ๋ฃจ๋จธ๋ฅผ ๋ฏฟ์„ ๋•Œ,
5์˜ ์ฃผ๋ณ€์ธ์˜ ์ ˆ๋ฐ˜์ด ๋ฃจ๋จธ๋ฅผ ๋ฏฟ์„ ๋•Œ,
7๋ฒˆ์˜ ์ฃผ๋ณ€์ธ์˜ ์ ˆ๋ฐ˜์ด ๋ฃจ๋จธ๋ฅผ ๋ฏฟ์„ ๋•Œ,

๋ฃจ๋จธ๋ฅผ ๋ฏฟ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.



์ฆ‰ time = 1์ผ ๋•Œ,
4์˜ ์ฃผ๋ณ€์ธ 3๋ช…์ค‘ 6๋งŒ ๋ฃจ๋จธ๋ฅผ ๋ฏฟ์œผ๋ฏ€๋กœ 4๋Š” ๋ฏฟ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
5์˜ ์ฃผ๋ณ€์ธ 4๋ช…์ค‘์— 6๋งŒ ๋ฃจ๋จธ๋ฅผ ๋ฏฟ์œผ๋ฏ€๋กœ 5๋Š” ๋ฏฟ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
7์˜ ์ฃผ๋ณ€์ธ 2๋ช…์ค‘์— 6์ด ๋ฃจ๋จธ๋ฅผ ๋ฏฟ์œผ๋ฏ€๋กœ (์ ˆ๋ฐ˜์ด ๋ฏฟ์Œ) 7์€ ๋ฃจ๋จธ๋ฅผ ๋ฏฟ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.


time = 2์ผ ๋•Œ,
7์˜ ์ฃผ๋ณ€์ธ ์ค‘์—๋Š” 5,6์„ ๋ณด๋ฉด,
5์˜ ์ฃผ๋ณ€์ธ 4๋ช…์ค‘์— ์ ˆ๋ฐ˜์ธ 2๋ช…์ด (6,7)์ด ๋ฏฟ์œผ๋ฏ€๋กœ 5๋„ ๋ฃจ๋จธ๋ฅผ ๋ฏฟ๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์š”๋Ÿฐ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ธ๊ฑฐ์ฃ ....

์œ„์ฒ˜๋Ÿผ ์‹œ๊ฐ„์˜ ์ˆœ์„œ๋Œ€๋กœ ํผ์ ธ๋‚˜๊ฐ€๋Š” ๊ฑธ๋ณด๋ฉด,
deque๋ฅผ ํ†ตํ•ด์„œ BFS๋กœ ๋ฏธ๋กœ ์ฐพ๋“ฏ์ด ํ•˜๋ฉด ํ’€๋ฉด ๋˜๊ฒ ๋‹ค! ํ•˜๋Š” ๊ฐ€๋‹ฅ์ด ๋ณด์ž…๋‹ˆ๋‹ค.



์œ„ ํ๋ฆ„๋Œ€๋กœ ๊ณ ~~๋Œ€๋กœ ์ž‘์„ฑํ•˜๋ฉด,

while q:
    person, time = q.popleft()
    
    cnt = 0
    for p in info[person]:
        if p == 0:
            break
        if answer[p] == -1:
            belive[p] += 1
            
            if belive[p] >= (len(info[p]) + 1) // 2:
                answer[p] = time + 1
                q.append((p, time+1)) 

์ €๋Š” ๊ฐ ์‚ฌ๋žŒ๋งˆ๋‹ค ์ฃผ๋ณ€์ธ๋“ค ์ค‘ ๋ฃจ๋จธ๋ฅผ ๋ฏฟ๋Š” ์‚ฌ๋žŒ์˜ ์ˆ˜๋ฅผ ๊ฐฑ์‹ ํ•˜๋„๋ก ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฏฟ๋Š” ์‚ฌ๋žŒ์„ list, set์œผ๋กœ ๊ด€๋ฆฌ๋ฅผ ํ–ˆ๋Š”๋ฐ, ๋ช…์ˆ˜๋กœ ๊ด€๋ฆฌํ•˜๋Š”๊ฒŒ ๊ฐ€์žฅ ๊น”๋”ํ•œ ๋ฐฉ๋ฒ•์ธ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค.



๋—!

๐Ÿ“š ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ๋œ ๋‚ด์šฉ

Copy link
Member

@tgyuuAn tgyuuAn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

import sys
from collections import defaultdict

def input(): return sys.stdin.readline().rstrip()

N = int(input())
link = defaultdict(list)
now = defaultdict(set)

for idx in range(1,N+1):
    link_info = list(map(int, input().split()))
    link_info.pop()
    link[idx] = link_info
    now[idx] = set(link_info)

remain_count = int(input())
remain = list(map(int, input().split()))

answer = [-1 for _ in range(N+1)]
visited = set()
turn = 0
while remain:
    new = list()
    
    for lier in remain:
        if lier in visited: continue
        answer[lier] = turn
        visited.add(lier)
        
        for neighbor in link[lier]:
            if neighbor in visited: continue
        
            now[neighbor].discard(lier)
            if len(link[neighbor]) >= len(now[neighbor])*2:
                new.append(neighbor)
                            
    remain = new
    turn += 1
    
print(*answer[1:])

ํ—‰ ๋‚˜๋„ List, set์œผ๋กœ ํ–ˆ๋Š”๋ฐ...!

set์ด ํŽธํ•˜๋‹ค๊ณ ์š”~~~

@H0ngJu H0ngJu merged commit 4dbfc3a into main Feb 12, 2025
5 checks passed
@H0ngJu H0ngJu deleted the 41-H0ngJu branch February 12, 2025 00:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants