본문 바로가기
알고리즘

[BAEKJOON] 27982 큐브 더미

by mAlfred 2025. 9. 26.
반응형

문제

 크기의 입체 공간이 있다. 공간 속 좌표는 을 만족하는 세 정수 로 나타낸다.

공간 속에는 개의 큐브들이 존재하며, 각 큐브는 정확히 하나씩의 좌표를 차지한다. 같은 좌표에는 여러 개의 큐브가 겹쳐 있지 않다. 다음 조건을 만족하는 큐브의 개수를 찾아보자.

  • 에 큐브가 존재할 때,   곳 모두에 큐브가 존재한다.

입력

첫 번째 줄에 두 정수 , 이 주어진다.

다음 개의 줄에 걸쳐 각 줄마다 세 정수 , , 가 주어진다. 이는 에 큐브가 존재한다는 의미이다.

출력

문제의 정답을 출력한다.

제한

  • 중복된 좌표는 주어지지 않음

예제 입력 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