본문 바로가기

Develop/코딩인터뷰

[코딩인터뷰] 2020 카카오 신입 공채 - 자물쇠와 열쇠

반응형

Kakao 2020 신입 블라인드 공채 자물쇠와 열쇠
Kakao 2020 신입 블라인드 공채 자물쇠와 열쇠

import sys
readline = sys.stdin.readline

def rotate(key):
    return list(list(x)[::-1] for x in zip(*key))

def check(N, M, board):
    for x in range(M-1, M+N-1):
        for y in range(M-1, M+N-1):
            if board[x][y] != 1:
                return False
    return True

def solution(key, lock):
    M = len(key)
    N = len(lock)

    board = [[0] * ((M-1)+N+(M-1)) for _ in range((M-1)+N+(M-1))]
    for i in range(N):
        for j in range(N):
            board[M-1+i][M-1+j] = lock[i][j]

    for rot in range(4):
        key = rotate(key)

        for x in range(M-1+N):
            for y in range(M-1+N):

                for a in range(M):
                    for b in range(M):
                        board[x+a][y+b] += key[a][b]

                if check(N, M, board):
                    return True

                for c in range(M):
                    for d in range(M):
                        board[x+c][y+d] -= key[c][d]

    return False
반응형