Algorithm๐Ÿงถ | ๊ฐ€์žฅ ํฐ ์ •์‚ฌ๊ฐํ˜• ์ฐพ๊ธฐ(๋™์ ๊ณ„ํš๋ฒ•)

saneeeeeeee_Yaยท2021๋…„ 3์›” 23์ผ
0

Algorithm

๋ชฉ๋ก ๋ณด๊ธฐ
8/11
post-thumbnail

https://programmers.co.kr/learn/courses/30/lessons/12905

๋ฌธ์ œ ์„ค๋ช…

1์™€ 0๋กœ ์ฑ„์›Œ์ง„ ํ‘œ(board)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ‘œ 1์นธ์€ 1 x 1 ์˜ ์ •์‚ฌ๊ฐํ˜•์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ํ‘œ์—์„œ 1๋กœ ์ด๋ฃจ์–ด์ง„ ๊ฐ€์žฅ ํฐ ์ •์‚ฌ๊ฐํ˜•์„ ์ฐพ์•„ ๋„“์ด๋ฅผ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”. (๋‹จ, ์ •์‚ฌ๊ฐํ˜•์ด๋ž€ ์ถ•์— ํ‰ํ–‰ํ•œ ์ •์‚ฌ๊ฐํ˜•์„ ๋งํ•ฉ๋‹ˆ๋‹ค.)

์˜ˆ๋ฅผ ๋“ค์–ด

1234
0111
1111
0010

๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ฐ€์žฅ ํฐ ์ •์‚ฌ๊ฐํ˜•์€

1234
0111
1111
0010

๊ฐ€ ๋˜๋ฉฐ ๋„“์ด๋Š” 9๊ฐ€ ๋˜๋ฏ€๋กœ 9๋ฅผ ๋ฐ˜ํ™˜ํ•ด ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ œํ•œ์‚ฌํ•ญ

ํ‘œ(board)๋Š” 2์ฐจ์› ๋ฐฐ์—ด๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.
ํ‘œ(board)์˜ ํ–‰(row)์˜ ํฌ๊ธฐ : 1,000 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜
ํ‘œ(board)์˜ ์—ด(column)์˜ ํฌ๊ธฐ : 1,000 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜
ํ‘œ(board)์˜ ๊ฐ’์€ 1๋˜๋Š” 0์œผ๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

boardanswer
[[0,1,1,1],[1,1,1,1],[1,1,1,1],[0,0,1,0]]9
[[0,0,1,1],[1,1,1,1]]4

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1
์œ„์˜ ์˜ˆ์‹œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2
| 0 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 |
๋กœ ๊ฐ€์žฅ ํฐ ์ •์‚ฌ๊ฐํ˜•์˜ ๋„“์ด๋Š” 4๊ฐ€ ๋˜๋ฏ€๋กœ 4๋ฅผ returnํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ™ˆ๋ฌธ์ œ ํ’€์ด๐Ÿ™‰

def solution(board):
    for i in range(1, len(board)): #height
        for j in range(1, len(board[0])): #width
            if board[i][j] > 0: 
                board[i][j] =  min(board[i-1][j], board[i][j-1], board[i-1][j-1]) + 1 #์ตœ์†Œ๊ฐ’ + 1 
                #ํ•ด๋‹น ์ขŒํ‘œ๊ฐ’์˜ ์œ„, ์˜†, ๋Œ€๊ฐ์„  ์œ„์˜ ์ˆซ์ž ์ค‘ ์ตœ์†Œ๊ฐ’์—์„œ + 1 ์ฃผ๋ณ€์˜ ๊ฐ’์— ์˜ํ•ด ์ •์‚ฌ๊ฐํ˜•์„ ํ™•์ธ
    answer = []
    for i in board:
        for j in i:
            answer.append(j)
    return max(answer)**2

๋‹ค๋ฅธ ์‚ฌ๋žŒ ํ’€์ด๐Ÿ‘€

def findLargestSquare(board):
   answer = 1
   res = [[1 if x=='O' else 0 for x in y] for y in board]
   for y in range(len(board)):
       for x in range(len(board[y])):
           if board[y][x] == 'O':
               res[y][x] = min(res[y-1][x], res[y-1][x-1], res[y][x-1]) + 1
               if res[y][x] > answer: answer = res[y][x]

   return answer ** 2
profile
๐Ÿœhttps://action2thefuture.github.io/๐Ÿœ

0๊ฐœ์˜ ๋Œ“๊ธ€