๐Ÿ“š Study/Baekjoon

[Silver II] 15787 - ๊ธฐ์ฐจ๊ฐ€ ์–ด๋‘ ์„ ํ—ค์น˜๊ณ  ์€ํ•˜์ˆ˜๋ฅผ

์œฐ๊ฐฑ 2025. 5. 8. 13:57

๋ฌธ์ œ

N๊ฐœ์˜ ๊ธฐ์ฐจ๊ฐ€ ์–ด๋‘ ์„ ํ—ค์น˜๊ณ  ์€ํ•˜์ˆ˜๋ฅผ ๊ฑด๋„ˆ๋ ค๊ณ  ํ•œ๋‹ค.

๊ธฐ์ฐจ๋Š” 20๊ฐœ์˜ ์ผ๋ ฌ๋กœ ๋œ ์ขŒ์„์ด ์žˆ๊ณ , ํ•œ ๊ฐœ์˜ ์ขŒ์„์—๋Š” ํ•œ ๋ช…์˜ ์‚ฌ๋žŒ์ด ํƒˆ ์ˆ˜ ์žˆ๋‹ค. 

๊ธฐ์ฐจ์˜ ๋ฒˆํ˜ธ๋ฅผ 1๋ฒˆ๋ถ€ํ„ฐ N๋ฒˆ์œผ๋กœ ๋งค๊ธธ ๋•Œ, ์–ด๋– ํ•œ ๊ธฐ์ฐจ์— ๋Œ€ํ•˜์—ฌ M๊ฐœ์˜ ๋ช…๋ น์ด ์ฃผ์–ด์ง„๋‹ค.

๋ช…๋ น์˜ ์ข…๋ฅ˜๋Š” 4๊ฐ€์ง€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • 1 i x : i๋ฒˆ์งธ ๊ธฐ์ฐจ์—(1 โ‰ค i โ‰ค N) x๋ฒˆ์งธ ์ขŒ์„์—(1 โ‰ค x โ‰ค 20) ์‚ฌ๋žŒ์„ ํƒœ์›Œ๋ผ. ์ด๋ฏธ ์‚ฌ๋žŒ์ด ํƒ€์žˆ๋‹ค๋ฉด , ์•„๋ฌด๋Ÿฐ ํ–‰๋™์„ ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • 2 i x : i๋ฒˆ์งธ ๊ธฐ์ฐจ์— x๋ฒˆ์งธ ์ขŒ์„์— ์•‰์€ ์‚ฌ๋žŒ์€ ํ•˜์ฐจํ•œ๋‹ค. ๋งŒ์•ฝ ์•„๋ฌด๋„ ๊ทธ์ž๋ฆฌ์— ์•‰์•„์žˆ์ง€ ์•Š์•˜๋‹ค๋ฉด, ์•„๋ฌด๋Ÿฐ ํ–‰๋™์„ ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • 3 i : i๋ฒˆ์งธ ๊ธฐ์ฐจ์— ์•‰์•„์žˆ๋Š” ์Šน๊ฐ๋“ค์ด ๋ชจ๋‘ ํ•œ์นธ์”ฉ ๋’ค๋กœ๊ฐ„๋‹ค. k๋ฒˆ์งธ ์•‰์€ ์‚ฌ๋žŒ์€ k+1๋ฒˆ์งธ๋กœ ์ด๋™ํ•˜์—ฌ ์•‰๋Š”๋‹ค. ๋งŒ์•ฝ 20๋ฒˆ์งธ ์ž๋ฆฌ์— ์‚ฌ๋žŒ์ด ์•‰์•„์žˆ์—ˆ๋‹ค๋ฉด ๊ทธ ์‚ฌ๋žŒ์€ ์ด ๋ช…๋ น ํ›„์— ํ•˜์ฐจํ•œ๋‹ค.
  • 4 i : i๋ฒˆ์งธ ๊ธฐ์ฐจ์— ์•‰์•„์žˆ๋Š” ์Šน๊ฐ๋“ค์ด ๋ชจ๋‘ ํ•œ์นธ์”ฉ ์•ž์œผ๋กœ๊ฐ„๋‹ค. k๋ฒˆ์งธ ์•‰์€ ์‚ฌ๋žŒ์€ k-1 ๋ฒˆ์งธ ์ž๋ฆฌ๋กœ ์ด๋™ํ•˜์—ฌ ์•‰๋Š”๋‹ค. ๋งŒ์•ฝ 1๋ฒˆ์งธ ์ž๋ฆฌ์— ์‚ฌ๋žŒ์ด ์•‰์•„์žˆ์—ˆ๋‹ค๋ฉด ๊ทธ ์‚ฌ๋žŒ์€ ์ด ๋ช…๋ น ํ›„์— ํ•˜์ฐจํ•œ๋‹ค.

M๋ฒˆ์˜ ๋ช…๋ น ํ›„์— 1๋ฒˆ์งธ ๊ธฐ์ฐจ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ํ•œ ๊ธฐ์ฐจ์”ฉ ์€ํ•˜์ˆ˜๋ฅผ ๊ฑด๋„ˆ๋Š”๋ฐ ์กฐ๊ฑด์ด ์žˆ๋‹ค.

๊ธฐ์ฐจ๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ง€๋‚˜๊ฐ€๋ฉฐ ๊ธฐ์ฐจ๊ฐ€ ์ง€๋‚˜๊ฐˆ ๋•Œ ์Šน๊ฐ์ด ์•‰์€ ์ƒํƒœ๋ฅผ ๋ชฉ๋ก์— ๊ธฐ๋กํ•˜๋ฉฐ ์ด๋ฏธ ๋ชฉ๋ก์— ์กด์žฌํ•˜๋Š” ๊ธฐ๋ก์ด๋ผ๋ฉด ํ•ด๋‹น ๊ธฐ์ฐจ๋Š” ์€ํ•˜์ˆ˜๋ฅผ ๊ฑด๋„ ์ˆ˜ ์—†๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด, ๋‹ค์Œ ๊ทธ๋ฆผ์„ ์˜ˆ๋กœ ๋“ค์—ˆ์„ ๋•Œ, 1๋ฒˆ์งธ ๊ธฐ์ฐจ์™€ ๊ฐ™์ด ์Šน๊ฐ์ด ์•‰์€ ์ƒํƒœ๋Š” ๊ธฐ๋ก๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์€ํ•˜์ˆ˜๋ฅผ ๊ฑด๋„ ์ˆ˜์žˆ๋‹ค. 2๋ฒˆ์งธ ๊ธฐ์ฐจ์™€ ๊ฐ™์€ ์ƒํƒœ๋„ ๊ธฐ๋ก๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— 2๋ฒˆ์งธ ๊ธฐ์ฐจ๋„ ์€ํ•˜์ˆ˜๋ฅผ ๊ฑด๋„ ์ˆ˜ ์žˆ๋‹ค. 3๋ฒˆ์งธ ๊ธฐ์ฐจ๋Š” 1๋ฒˆ์งธ ๊ธฐ์ฐจ์™€ ์Šน๊ฐ์ด ์•‰์€ ์ƒํƒœ๊ฐ€ ๊ฐ™์œผ๋ฏ€๋กœ ์€ํ•˜์ˆ˜๋ฅผ ๊ฑด๋„ ์ˆ˜ ์—†๋‹ค.

์ฒ˜์Œ์— ์ฃผ์–ด์ง€๋Š” ๊ธฐ์ฐจ์—๋Š” ์•„๋ฌด๋„ ์‚ฌ๋žŒ์ด ํƒ€์ง€ ์•Š๋Š”๋‹ค.

์€ํ•˜์ˆ˜๋ฅผ ๊ฑด๋„ ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ฐจ์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ž…๋ ฅ์˜ ์ฒซ์งธ ์ค„์— ๊ธฐ์ฐจ์˜ ์ˆ˜ N(1 โ‰ค N โ‰ค 100000)๊ณผ ๋ช…๋ น์˜ ์ˆ˜ M(1 โ‰ค M โ‰ค 100000)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ดํ›„ ๋‘ ๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ M+1๋ฒˆ์งธ ์ค„๊นŒ์ง€ ๊ฐ ์ค„์— ๋ช…๋ น์ด ์ฃผ์–ด์ง„๋‹ค. 

์ถœ๋ ฅ

์€ํ•˜์ˆ˜๋ฅผ ๊ฑด๋„ ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ฐจ์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

์˜ˆ์ œ ์ž…๋ ฅ 1 ๋ณต์‚ฌ

5 5
1 1 1
1 1 2
1 2 2
1 2 3
3 1

์˜ˆ์ œ ์ถœ๋ ฅ 1 ๋ณต์‚ฌ

2

# ํ’€์ด ๋ฐฉ๋ฒ•

๋”ฑํžˆ ๊ตฌํ˜„์ด ์–ด๋ ค์šด ๋ฐฉ๋ฒ•์€ ์—†์—ˆ๋‹ค.

ํ•˜๋‚˜๊ฐ€ ํ—ท๊ฐˆ๋ ธ๋˜ ํŒŒํŠธ๊ฐ€ ์žˆ์—ˆ๋‹ค๋ฉด Counter๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ uniqueํ•œ row๋ฅผ ๊ตฌํ•˜๋Š”๊ฒŒ ๋Šฅ์ˆ™ํ•˜์ง€ ์•Š์•˜๋‹ค๋Š”์ !

์•„๋‹ˆ๋ฉด set์„ ๊ตฌํ˜„ํ•ด์„œ ์•„๋ž˜์ฒ˜๋Ÿผ ๊ตฌํ•  ์ˆ˜๋„ ์žˆ๋‹ค

unique = set()
for row in graph: unique.add(tuple(row))
print(len(unique))

# ์ฝ”๋“œ

# 2025-05-08 13:17-40
import sys
from collections import Counter
sys.stdin = open("input.txt","r")
n, m = map(int,sys.stdin.readline().split())

graph = [[0]*20 for _ in range(n)]

for _ in range(m):
    direction = list(map(int,sys.stdin.readline().split()))
    # i๋ฒˆ์งธ ๊ธฐ์ฐจ, x๋ฒˆ์งธ ์ขŒ์„์— ์‚ฌ๋žŒ์„ ํƒœ์›Œ๋ผ
    if direction[0] == 1:
        i, x = direction[1], direction[2]
        graph[i-1][x-1] = 1
    # i๋ฒˆ์งธ ๊ธฐ์ฐจ, x๋ฒˆ์งธ ์ขŒ์„์— ์‚ฌ๋žŒ์€ ํ•˜์ฐจํ•œ๋‹ค
    elif direction[0] == 2:
        i, x = direction[1], direction[2]
        graph[i-1][x-1] = 0
    # i๋ฒˆ์งธ ๊ธฐ์ฐจ์— ์•‰์•„์žˆ๋Š” ์Šน๊ฐ๋“ค์€ ๋ชจ๋‘ ํ•œ์นธ์”ฉ ๋’ค๋กœ
    elif direction[0] == 3:
        i = direction[1]
        for j in range(18,-1,-1):
            graph[i-1][j+1] = graph[i-1][j]
        graph[i-1][0] = 0
    # i๋ฒˆ์งธ ๊ธฐ์ฐจ์— ์•‰์•„์žˆ๋Š” ์Šน๊ฐ๋“ค์€ ๋ชจ๋‘ ํ•œ์นธ์”ฉ ์•ž์œผ๋กœ
    elif direction[0] == 4:
        i = direction[1]
        for j in range(1, 20):
            graph[i-1][j-1] = graph[i-1][j]
        graph[i-1][19] = 0


row_list = [tuple(row) for row in graph]
counter = Counter(row_list)
print(len(counter))