[SWEA] [S/W 문제해결 기본] 5일차 - Magnetic

야금야금 공부·2023년 5월 1일
0

SWEA

목록 보기
14/43
post-thumbnail

[S/W 문제해결 기본] 5일차 - Magnetic


문제 풀이

처음에는 n극과 s극으로 이동하는 로직을 구현 후, BFS를 이용해 주변을 돌면서 1 옆에 2가 있으면, 2 옆에 1이 있으면 cnt에 1을 더해주었다.

그런데, 댓글에 누가 로직을 구현하지 않아도 풀 수 있다고 해서 의문이 들었는데 그렇게 푸는 방법이 있었다.
열마다 행을 체크해 1이 있는데 2가 있다면 cnt += 1을 해주었다.

import sys
sys.stdin = open("input.txt", "r")

for i in range(1, 11):

    n = int(input())
    arr = [list(input().split()) for _ in range(n)]
    cnt = 0

    for j in range(n):
        r = 0
        stack = []
        while r < n:
            if not stack and arr[r][j] == '1':
                stack.append('1')
            elif stack and arr[r][j] == '2':
                cnt += int(stack.pop())
            r += 1

    print("#{} {}".format(i, cnt))

0개의 댓글