Skip to content

Commit 79752a1

Browse files
authored
Create 4.py
1 parent 3be8475 commit 79752a1

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

12/4.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# 2차원 리스트 90도 회전하기
2+
def rotate_a_matrix_by_90_degree(a):
3+
n = len(a) # 행 길이 계산
4+
m = len(a[0]) # 열 길이 계산
5+
result = [[0] * n for _ in range(m)] # 결과 리스트
6+
for i in range(n):
7+
for j in range(m):
8+
result[j][n - i - 1] = a[i][j]
9+
return result
10+
11+
# 자물쇠의 중간 부분이 모두 1인지 확인
12+
def check(new_lock):
13+
lock_length = len(new_lock) // 3
14+
for i in range(lock_length, lock_length * 2):
15+
for j in range(lock_length, lock_length * 2):
16+
if new_lock[i][j] != 1:
17+
return False
18+
return True
19+
20+
def solution(key, lock):
21+
n = len(lock)
22+
m = len(key)
23+
# 자물쇠의 크기를 기존의 3배로 변환
24+
new_lock = [[0] * (n * 3) for _ in range(n * 3)]
25+
# 새로운 자물쇠의 중앙 부분에 기존의 자물쇠 넣기
26+
for i in range(n):
27+
for j in range(n):
28+
new_lock[i + n][j + n] = lock[i][j]
29+
30+
# 4가지 방향에 대해서 확인
31+
for rotation in range(4):
32+
key = rotate_a_matrix_by_90_degree(key) # 열쇠 회전
33+
for x in range(n * 2):
34+
for y in range(n * 2):
35+
# 자물쇠에 열쇠를 끼워 넣습니다.
36+
for i in range(m):
37+
for j in range(m):
38+
new_lock[x + i][y + j] += key[i][j]
39+
# 새로운 자물쇠에 열쇠가 정확히 들어 맞는지 검사
40+
if check(new_lock) == True:
41+
return True
42+
# 자물쇠에서 열쇠를 다시 빼냅니다.
43+
for i in range(m):
44+
for j in range(m):
45+
new_lock[x + i][y + j] -= key[i][j]
46+
return False

0 commit comments

Comments
 (0)