File tree Expand file tree Collapse file tree 1 file changed +46
-0
lines changed
Expand file tree Collapse file tree 1 file changed +46
-0
lines changed Original file line number Diff line number Diff line change 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
You can’t perform that action at this time.
0 commit comments