1. 해결방법
그래프 문제이긴 하다만 dy, dx처럼 그래프 이동 배열을 정해주지 않고 레드, 블루에 위치한 인덱스만 탐색해서 카운트 하면 된다.
간단한 문제인데 생각을 못했던걸 보면 컨디션 이슈인듯;;
레드는 아래, 블루는 위로 이동하기 때문에 2중 for문에서 레드를 먼저 탐색하고 stack에 append해야한다.
블루는 stack에 레드가 있다면 pop을 진행한다.
주의해야될 점은 레드가 append할 때에는 stack에 아무 데이터도 없어야 한다. 그 이유는 레드가 2개든 3개든 블루만 있다면 교착상태가 발생하고 카운트는 1만 증가하기 떄문이다.
반면 블루는 stack이 없다면 pop을 할 수가 없다. 그렇기에 분기문으로 stack이 있어야 한다는 조건을 걸어야 한다.
2. 정답코드
T = 10
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1, T + 1):
N = int(input())
maps = [list(map(int, input().split())) for _ in range(N)]
answer = 0
for j in range(N):
stack = []
for i in range(N):
if maps[i][j] == 1:
if not stack:
stack.append(1)
elif maps[i][j] == 2:
if stack:
stack.pop()
answer += 1
print(f"#{test_case} {answer}")
'Algorithm > SWEA' 카테고리의 다른 글
[SWEA] D3. 상호의 배틀필드 (1) | 2022.11.14 |
---|---|
[SWEA] D3. 회문2 (0) | 2022.11.11 |
[SWEA] D3. N-Queen (0) | 2022.11.11 |
[SWEA] D3. 최대 상금 (0) | 2022.11.08 |
[SWEA] D2. 달팽이 숫자 (0) | 2022.11.04 |