관리 메뉴

A seeker after truth

2020 카카오 <자물쇠와 열쇠> 12줄 짜리 숏코드 본문

Algorithm/문제풀이

2020 카카오 <자물쇠와 열쇠> 12줄 짜리 숏코드

dr.meteor 2022. 6. 22. 10:04

공개 하는게 좋은건지 모르겠지만 일단 해본다.

def solution(key, lock):
    key_len, lock_len = len(key), len(lock)
    lock_xy = set(filter(lambda i: lock[i[0]][i[1]] == 0, [(x, y) for x in range(lock_len) for y in range(lock_len)]))
    for _ in range(4):
        key = list(zip(*key[::-1]))
        key_xy = list(filter(lambda i: key[i[0]][i[1]] == 1, [(x, y) for x in range(key_len) for y in range(key_len)]))
        for dx in range(-key_len + 1, lock_len):
            for dy in range(-key_len + 1, lock_len):
                parallel_key_xy = set(map(lambda i: (i[0]+dx, i[1]+dy), key_xy))
                if lock_xy.issubset(parallel_key_xy) and all(map(lambda i: (not(0<=i[0]<lock_len and 0<=i[1]<lock_len)), parallel_key_xy-lock_xy)):
                    return True
    return False