1seul357
[SWEA] 마그네틱 본문
T = 10
for TC in range(T):
N = int(input())
arr = [list(map(int, input().split())) for _ in range(N)]
count = 0
for col in range(N):
flag = 0
for row in range(N):
if arr[row][col] == 1:
flag = 1
elif arr[row][col] == 2 and flag == 1:
count += 1
flag = 0
print('#{} {}'.format(TC+1, count))
문제 풀이
1. gravity와 비슷한 문제. N극과 S극을 실제로 옮기는 것이 아닌 인덱스를 이용해 탐색하는 것이다. 코드를 간단하게 구현하기 위해서는 flag를 사용해야 한다.
2. 먼저 값이 1이면 flag를 1로 바꾼다. flag가 1이고(N극이 있음), 그 다음 만나는 값이 2이면 NS 모양이므로 count += 1을 하면 된다. 그리고 flag는 다시 0으로 맞춘다. flag를 0으로 다시 바꾸지 않으면 NSS 인데 교착상태 += 1을 계속 하게 될 수 있다. 그러므로 다시 N을 만나기 전까지는 flag를 0으로 유지해야 한다.
'알고리즘 > SWEA' 카테고리의 다른 글
[SWEA] 회전 (0) | 2021.12.02 |
---|---|
[SWEA] 암호생성기 (0) | 2021.12.02 |
[SWEA] 퍼펙트 셔플 (0) | 2021.12.02 |
[SWEA] 가장 빠른 문자열 타이핑 (0) | 2021.12.02 |
[SWEA] 앞글자 따기 (0) | 2021.12.02 |