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
'Algorithm > Programmers' 카테고리의 다른 글
[2019 카카오 기출] 튜플(JAVA) (0) | 2021.04.26 |
---|---|
[2020 카카오 인턴십] 키패드 누르기(JAVA) (0) | 2021.04.21 |
[2019 카카오 기출] 크레인 인형뽑기 게임(JAVA) (0) | 2021.04.14 |
[코딩테스트 연습] 방문 길이(py) (0) | 2021.02.24 |
[2020 카카오 기출] 동굴 탐험 (0) | 2020.09.10 |