2020 카카오 코딩 테스트 1차 문제
문제풀이
https://tech.kakao.com/2019/10/02/kakao-blind-recruitment-2020-round1/
2020 신입 개발자 블라인드 채용 1차 코딩 테스트 문제 해설
올해에도 2020이라는 멋진 숫자와 함께, 카카오의 신입 개발자 채용을 시작했습니다! 그 여정 중 첫 단계로 1차 코딩 테스트가 지난 9월 7일 토요일 오후 2시부터 오후 7시까지 5시간 동안 진행됐는데요. 저희 준비위원들도 설렘과 긴장 속에 원활한 진행을 위해 노력했고, 무사히 1차 테스트를 마칠 수 있었습니다. 테스트에는 총 7문제가 출제됐고, 응시자는 5시간 이내에 순서와 상관없이 문제를 해결해야 […]
tech.kakao.com
여기에 써있는 풀이를 그대로 구현했다.
1. 자물쇠가 N*N 행렬이라면, 3N*3N 매트릭스를 만든 후, 가운데 자물쇠를 배치한다.
2. 열쇠를 매트릭스에 올려놓고 한 칸씩 움직이며 3N*3N 행렬의 가운데가 모두 1이 되는지 확인한다.
3. 2에서 찾지 못한다면 열쇠를 90도 돌려서 다시 2 과정을 수행한다.
4. 4번 돌렸는데도(360도) 찾지 못한다면 불가능한 경우이다.
Python Code
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
class Solution {
public boolean solution(int[][] key, int[][] lock) {
int lockLen = lock.length;
int[][] l = new int[lockLen*3][lockLen*3];
for(int i=0;i<lockLen;i++) {
for(int j=0;j<lockLen;j++) {
l[i+lockLen][j+lockLen] = lock[i][j];
}
}
for(int r=0; r<4;r++) {
key=rotate(key);
boolean check = compare(key,l);
if(check)return true;
}
return false;
}
public int[][] rotate(int[][] key){
int len = key.length;
int[][] ans = new int[len][len];
for(int i=0;i<len;i++) {
for(int j=0;j<len;j++) {
ans[j][len-1-i] = key[i][j];
}
}
return ans;
}
public boolean compare(int[][] key, int[][] lock) {
int keyLen = key.length;
int lockLen = lock.length;
int diff = lockLen-keyLen;
for(int iMove=0; iMove<=diff;iMove++) {
for(int jMove=0; jMove<=diff;jMove++) {
int[][] tempKey = new int[lockLen][lockLen];
for(int i=0;i<keyLen;i++) {
for(int j=0;j<keyLen;j++) {
tempKey[i+iMove][j+jMove] = key[i][j];
}
}
boolean check = check(tempKey,lock);
if(check)return true;
}
}
return false;
}
public boolean check(int[][] key, int[][] lock) {
int len = lock.length/3;
for(int i=len;i<len*2;i++) {
for(int j=len;j<len*2;j++) {
if(key[i][j]+lock[i][j]!=1) {
return false;
}
}
}
return true;
}
}
|
cs |
Line 17 : 열쇠를 90도 회전시키는 함수이다.
Line 27 : 열쇠를 3N*3N 행렬에 올려놓고 한칸씩 움직이는 과정이다.
Line 45 : 열쇠와 자물쇠가 맞는지 확인하는 함수이다.
문제 링크
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 SQL 있었는데요 없었습니다 (0) | 2020.04.17 |
---|---|
프로그래머스 SQL 없어진 기록 찾기 (0) | 2020.04.17 |
프로그래머스 Lv2 JadenCase 문자열 만들기 (0) | 2020.03.27 |
프로그래머스 Lv2 뉴스 클러스터링 (0) | 2020.03.27 |
프로그래머스 SQL 오랜 기간 보호한 동물(2) (0) | 2020.03.23 |