반응형
문제
크기의 입체 공간이 있다. 공간 속 좌표는 을 만족하는 세 정수 로 나타낸다.
공간 속에는 개의 큐브들이 존재하며, 각 큐브는 정확히 하나씩의 좌표를 차지한다. 같은 좌표에는 여러 개의 큐브가 겹쳐 있지 않다. 다음 조건을 만족하는 큐브의 개수를 찾아보자.
- 총 곳 모두에 큐브가 존재한다. 에 큐브가 존재할 때,
입력
첫 번째 줄에 두 정수 , 이 주어진다.
다음 개의 줄에 걸쳐 각 줄마다 세 정수 , , 가 주어진다. 이는 에 큐브가 존재한다는 의미이다.
출력
문제의 정답을 출력한다.
제한
- 중복된 좌표는 주어지지 않음
예제 입력 1
3 1
1 1 1
예제 출력 1
0
조건을 만족하는 큐브는 없다.
예제 입력 2
3 7
2 2 2
1 2 2
3 2 2
2 1 2
2 3 2
2 2 1
2 2 3
예제 출력 2
1
개이다.
에 있는 큐브는 조건을 만족하므로, 조건을 만족하는 큐브는약간 문제가 이해가 안되서 헤맸다...
처음에 visited 리스트를 만들어서 재방문을 안하게 처리했는데
문제를 다시 읽어보니 개개별의 독립적인 큐브들을 체크하는 것이기 때문에 뻘짓을 했엇다...
n, m = map(int, input().split())
nLimit = n
mp = [[[False for _ in range(n+1)] for _ in range(n+1) ] for _ in range(n+1)]
np = [
(1, 0, 0), # 앞
(-1, 0, 0), # 뒤
(0, 1, 0), # 위
(0, -1, 0), # 아래
(0, 0, 1), # 오른쪽
(0, 0, -1) # 왼쪽
]
schd = []
for _ in range(m):
i,j,k = map(int, input().split())
schd.append((i,j,k))
mp[i][j][k] = True
cnt = 0
for i,j,k in schd:
isRight = True
for nx, ny, nz in np:
ni = i + nx
nj = j + ny
nk = k + nz
if nLimit >= ni >= 1 and nLimit >= nj >= 1 and nLimit >= nk >= 1:
if not mp[ni][nj][nk]:
isRight = False
break
else:
isRight = False
break
if isRight:
cnt += 1
print(cnt)
반응형
'알고리즘' 카테고리의 다른 글
[BAEKJOON] 31775 글로벌 포닉스 (0) | 2025.10.01 |
---|---|
[BAEKJOON] 28074 모비스 (0) | 2025.10.01 |
[BAEKJOON] 4949 균형잡힌 세상 (0) | 2025.09.25 |
[BAEKJOON] 29713 브실이의 띠부띠부씰 컬렉션 (0) | 2025.09.25 |
[BAEKJOON] 10409 서버 (0) | 2025.09.25 |