๋ฌธ์
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))
'๐ Study > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Gold V] 1931 - ํ์์ค ๋ฐฐ์ (0) | 2025.05.10 |
---|---|
[Gold V] 20207 - ๋ฌ๋ ฅ (0) | 2025.05.09 |
[Silver II] 12933 - ์ค๋ฆฌ (0) | 2025.05.04 |
[Silver I] 1283 - ๋จ์ถํค ์ง์ (0) | 2025.05.01 |
[Gold V] 21608 - ์์ด ์ด๋ฑํ๊ต (1) | 2025.04.30 |