본문 바로가기
코딩테스트 파이썬/백준

행렬

by 세용용용용 2024. 12. 23.

1080번: 행렬

 

나의 풀이

import sys

def _change_3X3(change_map, s_a, s_b): # 변환 함수 (3X3)
    for i in range(s_a, s_a + 3):
        for j in range(s_b, s_b + 3):
            change_map[i][j] = 1 - change_map[i][j]
    return change_map

def _sq_array(a, b, change_map, now_map):
    answer = 0
    for i in range(a - 2): # 변환할 (3x3 배열 찾기)
        for j in range(b - 2):
            if change_map[i][j] != now_map[i][j]:
                answer += 1
                change_map = _change_3X3(change_map, i, j) # 변환
    if (change_map == now_map):
        return answer
    else:
        return -1

a, b = map(int, sys.stdin.readline().rstrip().split())
change_map, now_map = [], []
for i in range(2):
    for _ in range(a):
        if (i == 0):
            change_map.append(list(map(int, sys.stdin.readline().rstrip())))
        else:
            now_map.append(list(map(int, sys.stdin.readline().rstrip())))
print(_sq_array(a, b, change_map, now_map))

 

시간 복잡도

for i in range(a - 2) : 변환할 배열 찾기 ( 이차형 시간 복잡도 )
    for j in range(b - 2) :
        3x3 내부 변환 루프 ( 상수 시간 )
해당 알고리즘 시간 복잡도 : 이차형 시간 복잡도 ( O(n**2) )

'코딩테스트 파이썬 > 백준' 카테고리의 다른 글

RGB거리  (0) 2024.12.26
접두사  (0) 2024.12.24
수열 정렬  (1) 2024.12.17
투명  (0) 2024.12.16
누울 자리를 찾아라  (1) 2024.12.15