Skip to content

Commit 28986d0

Browse files
committed
[PGS] 자물쇠와 열쇠 / level3 / 60분 실패
https://school.programmers.co.kr/learn/courses/30/lessons/60059
1 parent 9bc451e commit 28986d0

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# 배열 rotation
2+
def rotation(arr):
3+
retArr = [[0] * len(arr) for _ in range(len(arr))]
4+
# 11 > 13 / 12 > 23 / 13 > 33
5+
for i in range(len(arr)):
6+
for j in range(len(arr)):
7+
retArr[j][len(arr) - 1 - i] = arr[i][j]
8+
return retArr
9+
10+
11+
# 정값 체크
12+
def checkSol(keyArr, lockArr, x, y):
13+
keySize = len(keyArr)
14+
lockSize = len(lockArr)
15+
16+
boardSize = lockSize * 3
17+
board = [[0] * (boardSize) for _ in range(boardSize)]
18+
19+
start = lockSize - 1
20+
end = start + lockSize
21+
22+
# boardArr 에 lock 삽입
23+
for i in range(lockSize):
24+
for j in range(lockSize):
25+
board[start + i][start + j] += lockArr[i][j]
26+
27+
# boardArr 에 key 삽입
28+
for i in range(keySize):
29+
for j in range(keySize):
30+
board[i + x][j + y] += keyArr[i][j] # 값 복사
31+
32+
# 전부 1인지 체크
33+
for i in range(start, end):
34+
for j in range(start, end):
35+
if board[i][j] != 1:
36+
return False
37+
return True
38+
39+
40+
def solution(key, lock):
41+
for _ in range(4):
42+
43+
# 값 이동
44+
for x in range((len(lock) * 2) - 1):
45+
for y in range((len(lock) * 2) - 1):
46+
if checkSol(key, lock, x, y) == True:
47+
return True
48+
49+
# key 회전
50+
key = rotation(key)
51+
52+
return False

0 commit comments

Comments
 (0)