practivceAlgorithm/swexpertacademy

[SWEA][Python] 1220 magnetic

findTheValue 2021. 8. 27. 13:40

문제 보자마자 무지성 구현. 한칸씩 이동 이동 멈추면 반복문 종료.

다른 사람들은 0 빼고 1,2만 새 배열에 담아서 switch바꾸는 형식으로 풀었더라. 상태1에서 2를 만나면 1더하는 식으로.

 

import sys
sys.stdin = open('input.txt')


def move_block():
    check = 0
    new_struck = 0
    for i in range(N):
        for j in range(N):
            if not i == 99 and matrix[i][j] == 1:
                if not matrix[i+1][j]:
                    matrix[i][j], matrix[i+1][j] = matrix[i+1][j], matrix[i][j]
                    check = 1
                elif matrix[i+1][j] == 1:
                    matrix[i][j] = 0
                    check = 1
                else:
                    matrix[i][j],matrix[i+1][j] = 0, 0
                    new_struck += 1
                    check = 1
            elif not i == 0 and matrix[i][j] == 2:
                if not matrix[i-1][j]:
                    matrix[i][j], matrix[i - 1][j] = matrix[i - 1][j], matrix[i][j]
                    check = 1
                elif matrix[i-1][j] == 2:
                    matrix[i][j] = 0
                    check = 1
                else:
                    matrix[i][j],matrix[i-1][j] = 0, 0
                    new_struck += 1
                    check = 1
    return check, new_struck


for test in range(1,11):
    N = int(input())
    # 파란색은 N 쪽으로 빨간색은 S 쪽으로 교착상태의 갯수?
    matrix = [list(map(int, input().split())) for _ in range(N)]
    answer = 0
    flag = 1
    while flag:
        flag, check_point = move_block()
        answer += check_point
    print(f'#{test} {answer}')

'practivceAlgorithm > swexpertacademy' 카테고리의 다른 글

[SWEA][Python] 5186 이진수2  (0) 2021.09.19
[SWEA][Python] 5185 이진수  (0) 2021.09.19
[SWEA][Python] 1226 미로1  (0) 2021.08.25
[SWEA][Python] 1225 암호생성기  (0) 2021.08.25
[SWEA][Python] 1223 계산기2  (0) 2021.08.24