1seul357

[SWEA] 마그네틱 본문

알고리즘/SWEA

[SWEA] 마그네틱

1seul 2021. 12. 2. 19:57
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