ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [D3] SWEA 15868. XOR 2차원 배열
    SWEA 2024. 4. 29. 10:46

    *파이썬이라 채점하지는 않음*

    1. 접근 방식

    xor는 두 원소의 값이 0, 다르면 1이다.

     

    2. 디테일한 구현

    a[0]의 값을 0으로 세팅해준다.

    i=0~n, j=0~m을 탐색하게 될텐데

    1)i=0이고 j=0~m일때

    a[0]=0에 맞는 b 배열의 값이 세팅될 것이다.

    이 값들은 변화할 수 없다.

    2)i=1~n, j=0~m

    (1)j=0일때

    a[i]값을 세팅해준다,

    (2)j=1~m일 때

    xor 조건에 맞는 값인지

    확인한다.

    맞지 않는 값이면 'no'를 출력해준다.

     

     

    3. 코드 구현

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    def check(T):
        for i in range(0,n):
            for j in range(0,m):
                if i==0:
                    if T[i][j]==0:
                        b[j]=a[i]
                        
                    else:
                        b[j]=abs(a[i]-1)
                        
                else:
                    if j==0:
                        if T[i][j]==0:
                            a[i]=b[j]
                        else:
                            a[i]=abs(b[j]-1)
                    else:
                        if T[i][j]==0:
                            if a[i]!=b[j]:
                                return False
                        else:
                            if abs(a[i]-1)!=b[j]:
                                return False
                
        return True
     
    if __name__=='__main__':
        sys.stdin=open('input2.txt','r')   
        
        
        t=int(input()) ## 총 테스트 케이스 개수
        
        for tc in range(t):
            n,m=map(int,input().split()) ##n=행의 갯수, m=열의 갯수
            T=[list(map(int,input())) for _ in range(n)]  ##XOR 배열
            a=[0]*n
            b=[0]*m
            
            if check(T):
                print(f'#{tc+1} yes')
            else:
                print(f'#{tc+1} no')
    cs

     

     

     

    4. 깨달은 점 및 반성

    결국, 반복문 놀음이다.

    문제 풀이는 반복문을 가지고 노는 것이라는 것을 잊지 말자.

     

    'SWEA' 카테고리의 다른 글

    [D3] SWEA 15612. 체스판 위의 룩 배치  (0) 2024.04.29
    [D3] SWEA 15758. 무한 문자열  (0) 2024.04.29
    [D3] SWEA 16002. 합성수 방정식  (0) 2024.04.28
    [D3] SWEA 16800. 구구단 걷기  (0) 2024.04.28
    [D3] SWEA 17642. 최대 조작 횟수  (0) 2024.04.28
Designed by Tistory.