본문 바로가기
Algorithm/Programmers

[2020 카카오 기출] 자물쇠와 열쇠(JAVA)

by BAYABA 2021. 4. 21.

programmers.co.kr/learn/courses/30/lessons/60059


시뮬레이션 문제입니다.

 

keySize = M * M인 열쇠(KEY) 크기에서 M을 의미합니다.

lockSize = N * N인 자물쇠(LOCK) 크기에서 N을 의미합니다.

 

<해결 방법>
1. 주어진 열쇠에 대해 90, 180, 270도 회전한 형태를 계산하여 총 4개의 열쇠형태를 저장합니다.

2. 열쇠와 자물쇠가 한 칸이라도 맞닿아있는 경우를 계산하기 위해 2*M + N 크기의 배열을 만듭니다.

3. 2*M + N 배열의 한 가운데 지점에 LOCK 배열을 복사합니다. (즉, LOCK 배열 시작인덱스가 M,M)

4. KEY의 탐색 시작지점을 2중포문으로 (0,0)부터 (M+N, M+N)까지 지정 후 KEY로 자물쇠를 열 수 있는지 계산

5. 4번 과정에서 한 번이라도 자물쇠와 열쇠가 모든 조건을 만족한다면 true를 리턴합니다.


코드: github.com/cotchan/algorithm/blob/main/java/PROGRAMMERS/PG60059.java