2021. 5. 15. 01:08ใ๐ฑ Algorithm/Else
์ด๊ฑด ๋ชป ํ์ด์ ๋ค๋ฅธ ๋ถ ํ์ด๋ฅผ ์ฐธ๊ณ ํ์๋ค.
# ํ๋ก๊ทธ๋๋จธ์ค ์ฐ์ ํ์ด ์ฐธ๊ณ
def solution(board):
ss = {}
answer = 0
for y, line in enumerate(board):
for x, v in enumerate(line):
if v == 0:
continue
ss[(x,y)] = s = min(
ss.get((x-1,y), 0),
ss.get((x,y-1), 0),
ss.get((x-1,y-1), 0)
) + 1
answer = max(answer, s ** 2)
return answer
๋ฐฐ์ด ์
python dictionary์ get()๋ฉ์๋๋ฅผ ๋ฐฐ์ธ ์ ์์๋๋ฐ,
get()์ ์ฒซ๋ฒ์งธ ์ธ์๋ key๋ก, ๋ ๋ฒ์งธ ์ธ์๋ value๊ฐ ๋๋ค.
์ด ๋, key๊ฐ์ด dictionary์ ์กด์ฌํ์ง ์์ผ๋ฉด, key๊ฐ์ value๊ฐ(๋ ๋ฒ์งธ ์ธ์)์ ๋งคํํด์ค๋ค.
๋ฐ๋๋ก, key ๊ฐ์ด ์ด๋ฏธ dictionary์ ์กด์ฌํ๋ฉด ๊ธฐ์กด์ value๊ฐ์ return ํ๋ค.
a = {'a': 1, 'b': 2}
print(a.get('a', 3))
# ์ถ๋ ฅ: 1
print(a.get('c', 3))
# ์ถ๋ ฅ: 3
๋ค๋ฅธ ํ์ด
def solution(board):
for row in board:
if sum(row):
answer = 1
break
else:
return 0
for i in range(1, len(board)):
for j in range(1, len(board[0])):
if board[i - 1][j - 1] and board[i - 1][j] and board[i][j - 1] and board[i][j]:
board[i][j] = min(board[i - 1][j - 1], board[i - 1][j], board[i][j - 1]) + 1
answer = max(answer, board[i][j]) # ์๊ฐ ์ ํ์ํ ๋ก์ง์ธ์ง ์ดํดํด์ผํจ
return answer ** 2
ํต์ฌ
answer = max(answer, board[i][j]) ๋ผ์ธ์ ์ดํดํด์ผํ๋ค.
์ฌ๊ธฐ์ board[i][j]๋ ์ ์ฌ๊ฐํ ํ๋จ ์ฐ์ธก์ ๊ฐ์ด๋ฉฐ, ์ ์ฌ๊ฐํ ๋ด๋ถ์ ์์ ๊ฐ์ด ๋ชจ๋ 0์ด ์๋ ๋ +1 ์ด ๋๋ ๊ฐ์ด๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋น์ฐํ board[i][j]์ ๊ฐ์ด ๊ฐ์ฅ ํด ๊ฒ์ด๋ผ๊ณ ์ฐฉ๊ฐํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
์ด๋ฌํ ์ ์ ๋ฐฉ์งํ๊ณ ์ answer ๊ฐ์ ํ ๋นํ ๋, max() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ board[i][j] ๋ณด๋ค ํฐ ๊ฐ์ด ์์ ๋ update๋ฅผ ํด์ค๋ค.
'๐ฑ Algorithm > Else' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค ๊ฐ๋ก๋ฑ ํ์ด์ฌ (0) | 2021.05.16 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค [lv4] N-Queen ํ์ด์ฌ (0) | 2021.05.16 |
ํ๋ก๊ทธ๋๋จธ์ค [lv2] ๊ดํธ๋ณํ ํ์ด์ฌ (0) | 2021.04.25 |
ํ๋ก๊ทธ๋๋จธ์ค [lv3] ๋คํธ์ํฌ ํ์ด์ฌ (0) | 2021.04.25 |
ํ๋ก๊ทธ๋๋จธ์ค [lv2] ์คํ์ฑํ ๋ฐฉ ํ์ด์ฌ (0) | 2021.04.25 |