https://www.acmicpc.net/problem/10775

๋ฌธ์ œ

์˜ค๋Š˜์€ ์‹ ์Šน์›์˜ ์ƒ์ผ์ด๋‹ค.

๋ฐ•์Šน์›์€ ์ƒ์ผ์„ ๋งž์•„ ์‹ ์Šน์›์—๊ฒŒ ์ธ์ฒœ๊ตญ์ œ๊ณตํ•ญ์„ ์„ ๋ฌผ๋กœ ์คฌ๋‹ค.

๊ณตํ•ญ์—๋Š” G๊ฐœ์˜ ๊ฒŒ์ดํŠธ๊ฐ€ ์žˆ์œผ๋ฉฐ ๊ฐ๊ฐ์€ 1์—์„œ G๊นŒ์ง€์˜ ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

๊ณตํ•ญ์—๋Š” P๊ฐœ์˜ ๋น„ํ–‰๊ธฐ๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ๋„์ฐฉํ•  ์˜ˆ์ •์ด๋ฉฐ, ๋‹น์‹ ์€ i๋ฒˆ์งธ ๋น„ํ–‰๊ธฐ๋ฅผ 1๋ฒˆ๋ถ€ํ„ฐ gi (1 โ‰ค gi โ‰ค G) ๋ฒˆ์งธ ๊ฒŒ์ดํŠธ์ค‘ ํ•˜๋‚˜์— ์˜๊ตฌ์ ์œผ๋กœ ๋„ํ‚นํ•˜๋ ค ํ•œ๋‹ค. ๋น„ํ–‰๊ธฐ๊ฐ€ ์–ด๋А ๊ฒŒ์ดํŠธ์—๋„ ๋„ํ‚นํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ๊ณตํ•ญ์ด ํ์‡„๋˜๊ณ , ์ดํ›„ ์–ด๋–ค ๋น„ํ–‰๊ธฐ๋„ ๋„์ฐฉํ•  ์ˆ˜ ์—†๋‹ค.

์‹ ์Šน์›์€ ๊ฐ€์žฅ ๋งŽ์€ ๋น„ํ–‰๊ธฐ๋ฅผ ๊ณตํ•ญ์— ๋„ํ‚น์‹œ์ผœ์„œ ๋ฐ•์Šน์›์„ ํ–‰๋ณตํ•˜๊ฒŒ ํ•˜๊ณ  ์‹ถ์–ดํ•œ๋‹ค. ์Šน์›์ด๋Š” ๋น„ํ–‰๊ธฐ๋ฅผ ์ตœ๋Œ€ ๋ช‡ ๋Œ€ ๋„ํ‚น์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š”๊ฐ€?

์ž…๋ ฅ

์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ๊ฒŒ์ดํŠธ์˜ ์ˆ˜ G (1 โ‰ค G โ‰ค 105)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

๋‘ ๋ฒˆ์งธ ์ค„์—๋Š” ๋น„ํ–‰๊ธฐ์˜ ์ˆ˜ P (1 โ‰ค P โ‰ค 105)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

์ดํ›„ P๊ฐœ์˜ ์ค„์— gi (1 โ‰ค gi โ‰ค G) ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

์ถœ๋ ฅ

์Šน์›์ด๊ฐ€ ๋„ํ‚น์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€์˜ ๋น„ํ–‰๊ธฐ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

์˜ˆ์ œ


์ฝ”๋“œ

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

# ๋„ํ‚น ๊ฐ€๋Šฅํ•œ ๊ฒŒ์ดํŠธ๋ฅผ ์ฐพ๋Š” ํ•จ์ˆ˜
def find(n):
    # ์ฒ˜์Œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒŒ์ดํŠธ์ธ ๊ฒฝ์šฐ
    if root[n] == n:
        return n
    root[n] = find(root[n]) # ๊ฒŒ์ดํŠธ๋ฅผ ๊ณ„์† ์ž‘์€ ์ˆซ์ž๋กœ ๋ฐ”๊ฟ”์คŒ
    return root[n]

G = int(input())
P = int(input())
# ๊ฒŒ์ดํŠธ ์ •๋ณด๋ฅผ ์ €์žฅ
root = [i for i in range(G+1)]
# ๋น„ํ–‰๊ธฐ ์ •๋ณด๋ฅผ ์ €์žฅ
plane = [int(input()) for _ in range(P)]

# ์ตœ๋Œ€๋กœ ๋„ํ‚น ๊ฐ€๋Šฅํ•œ ๋น„ํ–‰๊ธฐ ์ˆ˜๋ฅผ ์ฐพ์•„์คŒ
res = 0
for p in plane:
    # ์ด์šฉ๊ฐ€๋Šฅํ•œ ๊ฒŒ์ดํŠธ๋ฅผ ์ฐพ์•„์คŒ
    gate = find(p)
    # ๋” ์ด์ƒ ์ด์šฉ๊ฐ€๋Šฅํ•œ ๊ฒŒ์ดํŠธ๊ฐ€ ์—†์œผ๋ฏ€๋กœ ํ์‡„
    if gate == 0:
        break
    # ๋น„ํ–‰๊ธฐ ํ•œ ๋Œ€๋ฅผ ๋Œ”์œผ๋ฏ€๋กœ -1
    root[gate] -= 1
    res += 1
    
print(res)

Point! ๐Ÿ’ก

  1. ๋ณธ์ธ์ด ๋ฃจํŠธ ๋…ธ๋“œ๋ผ๋ฉด, ์ด๋Š” ๊ณง ํ•ด๋‹น ๊ฒŒ์ดํŠธ๋ฅผ ํ•œ ๋ฒˆ๋„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์Œ์„ ๋งํ•œ๋‹ค.

  2. ๋งŒ์•ฝ ๋ฃจํŠธ ๋…ธ๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ์‚ฌ์šฉํ•œ ์ ์ด ์žˆ๋Š” ๊ฒŒ์ดํŠธ์ด๋ฉฐ, ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ๋ฃจํŠธ ๋…ธ๋“œ๊ฐ€ ๊ณง ๋Œ€์•ˆ ๊ฒŒ์ดํŠธ๊ฐ€ ๋œ๋‹ค.

  3. ๋Œ€์•ˆ ๊ฒŒ์ดํŠธ๊นŒ์ง€ ํ•˜๋‚˜๋„ ์กด์žฌํ•˜์ง€ ์•Š์•„, ๋ฃจํŠธ ๋…ธ๋“œ๊ฐ€ 0์ด ๋œ๋‹ค๋ฉด ์ด๋Š” ๊ณตํ•ญ์ด ํ์‡„๋จ์„ ์˜๋ฏธํ•˜์—ฌ ์ข…๋ฃŒํ•ด์ค€๋‹ค.

๊ฒŒ์ดํŠธ ์„ ํƒ ๊ธฐ์ค€ ๐Ÿ‘จโ€๐Ÿซ

2์˜ plane์—๊ฒŒ๋Š” 1,2์ด๋ผ๋Š” ๊ฒŒ์ดํŠธ์— ๋„ํ‚นํ•  ์ˆ˜ ์žˆ๋Š” ์„ ํƒ์ง€๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

  • ์—ฌ๊ธฐ์„œ ์šฐ์„ ์ ์œผ๋กœ ๋ณธ์ธ๊ณผ ๋™์ผํ•œ ์ˆซ์ž์˜ ๊ฒŒ์ดํŠธ๋ฅผ ์„ ํƒํ•œ๋‹ค. ์—†๋‹ค๋ฉด ์ตœ๋Œ€ํ•œ ๊ฐ€๊นŒ์šด ์ˆซ์ž์˜ ๊ฒŒ์ดํŠธ๋ฅผ ์„ ํƒํ•œ๋‹ค.

  • ๋งŒ์•ฝ ๋‹ค์Œ๋ฒˆ์— 2์ด๋ผ๋Š” plane์ด ๋™์ผํ•˜๊ฒŒ ๋‚˜์˜จ๋‹ค๋ฉด, 2๋ฒˆ ๊ฒŒ์ดํŠธ๋Š” ์ด๋ฏธ ์‚ฌ์šฉ์ค‘์ด๊ธฐ์— ๊ทธ ์ด์ „ ์ˆซ์ž์ธ 1๋ฒˆ ๊ฒŒ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.

์˜ˆ์‹œ 2๋ฒˆ์„ ํ†ตํ•œ ์„ค๋ช… ๐Ÿ‘จโ€๐Ÿ’ป

์ดˆ๊ธฐ root ์ƒํƒœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์ด๋Š” ๊ณง ๋ชจ๋“  ๊ฒŒ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค.

  • root : [0,1,2,3,4]

์ด์ œ ์ฒซ๋ฒˆ์งธ๋กœ, plane์˜ ์›์†Œ์ธ 2๋ฅผ ์ธ์ž๋กœ find ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰์‹œํ‚จ๋‹ค.

  • ํ˜„์žฌ root[2] ๋˜ํ•œ 2์ด๊ธฐ ๋•Œ๋ฌธ์—, gate์—๋Š” 2๊ฐ€ ๊ทธ๋Œ€๋กœ ๋“ค์–ด๊ฐ€๊ฒŒ ๋œ๋‹ค.

  • ์—ฌ๊ธฐ์„œ ๋ณธ์ธ๊ณผ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ˆซ์ž์ธ 2๋ฒˆ ๊ฒŒ์ดํŠธ๋ฅผ ์„ ํƒํ•ด์ฃผ๊ณ , root[2]์˜ ์›์†Œ๋ฅผ -1ํ•ด์ค€๋‹ค.

  • ํ˜„ root ์ƒํƒœ: [0,1,1,3,4]

๋‘๋ฒˆ์งธ๋กœ, ๋™์ผํ•˜๊ฒŒ 2๋ผ๋Š” ์›์†Œ๋ฅผ ์ธ์ž๋กœ find ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰์‹œํ‚จ๋‹ค.

  • ์ด์ „ ๊ณผ์ •์„ ํ†ตํ•ด์„œ root[2]์—๋Š” 2๊ฐ€ ์•„๋‹Œ 1์ด ๋“ค์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ตœ์ข…์ ์œผ๋กœ 1์„ ๋ฆฌํ„ดํ•œ๋‹ค.

  • 1๋ฒˆ ๊ฒŒ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๋น„ํ–‰๊ธฐ๋ฅผ ๋„ํ‚นํ•˜๊ณ  root[1]์„ -1ํ•ด์ค€๋‹ค.

  • ํ˜„ root ์ƒํƒœ: [0,0,1,3,4]

์„ธ๋ฒˆ์งธ๋กœ, 3์ด๋ผ๋Š” ์›์†Œ๋ฅผ ์ธ์ž๋กœ find ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰์‹œํ‚จ๋‹ค.

  • ํ˜„์žฌ root[3] ๋˜ํ•œ 3์ด๊ธฐ ๋•Œ๋ฌธ์—, gate์—๋Š” 3์ด ๊ทธ๋Œ€๋กœ ๋“ค์–ด๊ฐ€๊ฒŒ ๋œ๋‹ค.

  • 3๋ฒˆ ๊ฒŒ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๋น„ํ–‰๊ธฐ๋ฅผ ๋„ํ‚นํ•˜๊ณ  root[1]์„ -1ํ•ด์ค€๋‹ค.

  • ํ˜„ root ์ƒํƒœ: [0,0,1,2,4]

๋„ค๋ฒˆ์งธ๋กœ, ๋™์ผํ•˜๊ฒŒ 3์ด๋ผ๋Š” ์›์†Œ๋ฅผ ์ธ์ž๋กœ find ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰์‹œํ‚จ๋‹ค.

  • ์ด์ „ ๊ณผ์ •์„ ํ†ตํ•ด์„œ root[3]์—๋Š” 3์ด ์•„๋‹Œ 2๊ฐ€ ๋“ค์–ด์žˆ๋‹ค.

  • ๋‹ค์Œ์œผ๋กœ root[2]์—๋Š” 1์ด ๋“ค์–ด์žˆ์œผ๋ฉฐ, root[1]์—๋Š” 0์ด ๋“ค์–ด์žˆ์–ด ์ตœ์ข…์ ์œผ๋กœ 0์„ ๋ฆฌํ„ดํ•œ๋‹ค.

  • gate == 0 ์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋” ์ด์ƒ ์ด์šฉ๊ฐ€๋Šฅํ•œ ๊ฒŒ์ดํŠธ๊ฐ€ ์—†๋Š” ๊ฒƒ์œผ๋กœ ํŒ๋‹จํ•˜๊ณ  ํ์‡„ํ•œ๋‹ค.

์ด 3๊ฐœ์˜ ๋น„ํ–‰๊ธฐ๊ฐ€ ๋„ํ‚น์— ์„ฑ๊ณตํ•˜์˜€์œผ๋ฏ€๋กœ ์ด๋ฅผ ์ถœ๋ ฅํ•ด์ค€๋‹ค.


๋А๋‚€ ์  & ๋ฐฐ์šด ์ 

  1. ์˜ค๋žœ๋งŒ์— ์œ ๋‹ˆ์˜จ ํŒŒ์ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ œ์—ฌ์„œ ์กฐ๊ธˆ ๋‹นํ™ฉํ–ˆ๋‹ค. ์ด๋Ÿฐ ์‹์œผ๋กœ ๊ทธ๋ฆฌ๋””์™€ ์œ ๋‹ˆ์˜จ ํŒŒ์ธ๋“œ๋ฅผ ๊ฒฐํ•ฉํ•  ์ˆ˜ ์žˆ์Œ์„ ์•Œ๊ฒŒ ๋œ ๋ฌธ์ œ์˜€๋‹ค.

  2. ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ๊ฒŒ์ดํŠธ ๋ฒˆํ˜ธ๋กœ ๋‘๊ณ , ์‚ฌ์šฉํ•˜๋ฉด ํ•˜๋‚˜์”ฉ ์ค„์ด๋ฉฐ ๋Œ€์•ˆ ๊ฒŒ์ดํŠธ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ํ•œ๋‹ค๋Š” ์ ์„ ๋– ์˜ฌ๋ฆฌ๊ธฐ๋Š” ์‰ฝ์ง€ ์•Š์•˜๋‹ค..

profile
์•ˆ๋…•ํ•˜์„ธ์š”. ๋น„์ฆˆ๋‹ˆ์Šค๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž, ํ•œ์ƒํ˜ธ์ž…๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€