알고리즘/리트코드

3071. Minimum Operations to Write the Letter Y on a Grid

jinmc 2024. 3. 5. 16:32
반응형

 

콘테스트 3번 문제로 나온 문제인데, 

이 문제도 그렇게 어려운 편은 아니었던 것 같습니다. 

 

Y자의 위에까지부분을 iterate하고, 그 다음 부분을 iterate 합니다.

가짓수가 그렇게 많지는 않기 때문에 모든 경우의 수를 다 해버렸습니다.

 

나중에 결과 보니깐 시간 복잡도 측면에서는 좀 안좋게 나왔네요.

 

class Solution:
    def minimumOperationsToWriteY(self, grid: List[List[int]]) -> int:
        n = len(grid)
        def ttry(x, y):
            count = 0
            for i in range((n // 2)):
                for j in range(n):
                    if i == j:
                        if grid[i][j] != x:
                            count += 1
                    elif n-j-1 == i:
                        if grid[i][j] != x:
                            count += 1
                    else:
                        if grid[i][j] != y:
                            count += 1                  
                        
            for i in range((n // 2), n):
                for j in range(n):  
                    if j == (n // 2):
                        if grid[i][j] != x:
                            count += 1
                    else:
                        if grid[i][j] != y:
                            count += 1
            # print(x, y, count)
            return count
        
        return min(ttry(1, 0), ttry(1, 2), ttry(2, 0), ttry(2,1), ttry(0,1), ttry(0,2))
반응형