SWEA 1220. [S/W 문제해결 기본] 5일차 - Magnetic (Python, 구현, D3)

전승재·2023년 10월 13일
0

알고리즘

목록 보기
60/88

문제 접근

문제가 복잡해 보이지만 간단히 말하면 N,S짝을 찾아서 카운트하는 문제이다.
위에 N극이 있으므로 N극부터 시작해야 테이블 밑으로 떨어진 것을 카운트하지 않는다.
N부터 시작해 S로 끝난다. 따라서 N을 발견하면, S를 발견할 때 카운트를 1한다. S말고 N을 발견하면 카운트하지 않는다.

문제 풀이

N을 발견하면 flag를 1로 만들고 이 상태에서 S를 발견하면 flag를 다시 0으로 바꾼 후 result에 1을 더한다. 이렇게 100열에 행하면 된다.

 for i in range(N):
     flag = 0
     for val in q:
     	if val==1 and flag==0:
        	flag=1       
        if val==2 and flag==1:
        	result += 1
            flag=0

제출 코드

from collections import deque
T = 10
for test_case in range(1, T + 1):
    N = int(input())
    pan = []
    for i in range(N):
        line = list(map(int, input().split()))
        pan.append(line)

    
    result = 0
    for i in range(N):
        q = deque()
        for j in range(N):
            if pan[j][i]!=0:
                q.append(pan[j][i])
        flag = 0
        for val in q:
            if val==1 and flag==0:
                flag=1       
            if val==2 and flag==1:
                result += 1
                flag=0
    print(f'#{test_case} {result}')
    # 교착상태의 경우
    # 한 라인에 N, S가 있을 때
    # N이 위쪽, S가 아래쪽에 있을때

0개의 댓글