๋ฌธ์
ํ์ด
์ด์ ๋ฅผ ์ ๋นํ ํ์ /์ด๋์์ผ์ ์๋ฌผ์ ํ์ ๋ฑ ๋ง๊ฒ ๋ผ์์ผ ํ๋ค. ์ด์ ์ ์๋ฌผ์ ์ฌ์ด์ฆ๊ฐ ํฌ์ง ์์ผ๋ฏ๋ก ์์ ํ์์ผ๋ก ํ ์ ์๋ค. ์์ํ ํ์ด๋ฅผ ์ํด ์๋ฌผ์ ๋ฆฌ์คํธ์ ํฌ๊ธฐ๋ฅผ 3๋ฐฐ ์ด์์ผ๋ก ๋ณ๊ฒฝ(์๋ฌผ์ ๋ฅผ ์ค๊ฐ์ ๋๊ณ ๋๋จธ์ง๋ zero padding)ํ๊ณ ์ด์ ๋ฅผ ์ฌ๋ผ์ด๋ฉ/ํ์ ์ํค๋ฉด์ ํ๋์ฉ ํ์ธํ๋ฉด ๋๋ค.
2์ฐจ์ ๋ฆฌ์คํธ๋ฅผ 90๋ ํ์ ์ํค๋ ํจ์์ ์๋ฌผ์ ๋ฆฌ์คํธ์ ์ค๊ฐ ๋ถ๋ถ์ด ๋ชจ๋ 1์ธ์ง ํ์ธํ๋ ํจ์๋ฅผ ๋ง๋ ๋ค.
๋ฉ์ธ์ธ solution ํจ์์์๋ ์๋ฌผ์ ์ ํฌ๊ธฐ๋ฅผ 3๋ฐฐ๋ก ๋ณํํ๊ณ ์๋ก์ด ์๋ฌผ์ ๋ฆฌ์คํธ ์ค๊ฐ์ ๊ธฐ์กด์ ์๋ฌผ์ ๋ฅผ ๋ฃ๋๋ค. ๊ทธ๋ฆฌ๊ณ 4๊ฐ์ง ๋ฐฉํฅ๊ณผ ์ด์ ๊ฐ ์ด๋ํ๋ ํ๋ ๊ฒ์ for๋ฌธ์ ๋๋ค. ์ด์ ๋ ๊ฐ ์์น์์ ์๋ฌผ์ ์ ๋ฃ๊ณ ์ด์ ๊ฐ ์๋ฌผ์ ์ ์ ํํ ๋ค์ด๋ง๋์ง ํ์ธํ๊ณ ๋ค์ ์๋ฌผ์ ์์ ์ด์ ๋ฅผ ๋นผ์ฃผ๋ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
def rotate_a_matrix_by_90_degree(a):
n = len(a) # ํ ๊ธธ์ด
m = len(a[0]) # ์ด ๊ธธ์ด
result = [[0]* n for _ in range(m)]
for i in range(n):
for j in range(m):
result[j][n-i-1] = a[i][j]
return result
def check(new_lock):
lock_length = len(new_lock) // 3
for i in range(lock_length, lock_length*2):
for j in range(lock_length, lock_length*2):
if new_lock[i][j] !=1:
return False
return True
def solution(key, lock):
n = len(lock)
m = len(key)
new_lock = [[0]*(n*3) for _ in range(n*3)]
for i in range(n):
for j in range(n):
new_lock[n+i][n+j] = lock[i][j]
#print(new_lock[3][3:6],new_lock[4][3:6],new_lock[5][3:6],sep='\n')
for rotation in range(4):
key = rotate_a_matrix_by_90_degree(key)
for x in range(n*2):
for y in range(n*2):
for i in range(m):
for j in range(m):
new_lock[x+i][y+j] += key[i][j]
if check(new_lock) == True:
return True
for i in range(m):
for j in range(m):
new_lock[x+i][y+j] -= key[i][j]
return False
print(solution([[0, 0, 0], [1, 0, 0], [0, 1, 1]],[[1, 1, 1], [1, 1, 0], [1, 0, 1]]))
'๐ป Programming > ์๊ณ ๋ฆฌ์ฆ ํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[python] ํ๋ก๊ทธ๋๋จธ์ค_ํ๋ฆฐํฐ (์คํํ) (0) | 2022.02.14 |
---|---|
[python] ํ๋ก๊ทธ๋๋จธ์ค_๋ฌธ์์ด ์์ถ (์์ ํ์) (0) | 2022.02.14 |
[python] ํ๋ก๊ทธ๋๋จธ์ค_์นดํซ (์์ ํ์) (0) | 2022.02.14 |
[python] ํ๋ก๊ทธ๋๋จธ์ค_ํ๊ฒ๋๋ฒ (DFS&BFS) (0) | 2022.02.06 |
[python] ํ๋ก๊ทธ๋๋จธ์ค_๋จ์ด๋ณํ (DFS&BFS) (0) | 2022.02.06 |