๐Ÿค— [1์ฐจ] ํ”„๋ Œ์ฆˆ4๋ธ”๋ก

Jake_Youngยท2020๋…„ 9์›” 3์ผ
0

์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ, Coding Test

๋ชฉ๋ก ๋ณด๊ธฐ
7/23
post-thumbnail

๐Ÿ‘‰๋ฌธ์ œ ๋งํฌ


์ •๋‹ต ์ฝ”๋“œ ๋ฐ ํ•ด์„ค

# ์ถ”ํ›„์— ์˜ค๋ฅธ์ชฝ, ์•„๋ž˜, ์˜ค๋ฅธ์ชฝ ์•„๋ž˜๋ฅผ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•œ ์ขŒํ‘œ ๋ฆฌ์ŠคํŠธ
d = [[1, 0], [0, 1], [1, 1]]


def solution(m, n, board):
# ํ„ฐ์ง„ ๊ฐฏ์ˆ˜
    answer = 0
# ๋„ฃ๊ณ  ๋นผ๊ธฐ ์‰ฝ๊ฒŒ x์ถ•๊ณผ y์ถ•์„ ๋ฐ”๊ฟ”์ค€๋‹ค
    board = list(map(list, zip(*board)))
# ํ„ฐํŠธ๋ฆฌ๊ณ  -> ๋ฉ”์šฐ๊ณ ๋ฅผ ํ•œ ํŒ์œผ๋กœ ํ•  ๋•Œ ๋ช‡ ํŒ์„ ํ•ด์•ผํ•˜๋Š” ์ง€ ๊ธฐ์ค€์ด ๋˜๋Š” ๋ณ€์ˆ˜, bang
    bang = True
    while bang:
# ์‹œ์ž‘ ์ƒํƒœ๋Š” ํ„ฐ์ง€์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ์ดˆ๊ธฐํ™” ํ•œ๋‹ค
        bang = False
        status = [[0 for __ in range(m)] for _ in range(n)]
# ์ „์ฒด๋ฅผ ํ›‘์–ด๋ณด๋ฉฐ ์ง€์›Œ์•ผํ•  ๋ธ”๋ก์„ 1๋กœ ํ‘œ์‹œํ•ด๋‘๊ธฐ ์œ„ํ•œ 2์ฐจ์› ๋ฆฌ์ŠคํŠธ
        for x in range(m-1):
            for y in range(n-1):
# 2X2 ๊ตฌ์—ญ์ด ๋ชจ๋‘ ๊ฐ™์€ ๋ชจ์–‘์ธ์ง€ ํ™•์ธํ•œ๋‹ค
                if board[y][x]:
                    for _ in range(3):
                        if board[y][x] != board[y+d[_][1]][x+d[_][0]]:
                            break
# ๋„ค ๊ฐœ๊ฐ€ ๋ชจ๋‘ ๊ฐ™๋‹ค๋ฉด ๋‚˜์ค‘์— ์ง€์›Œ์ฃผ๊ธฐ ์œ„ํ•œ ํ‘œ์‹œ๋ฅผ ํ•œ๋‹ค
# ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์ด ์˜ค๋ฉด ์ถ”ํ›„ ๋ธ”๋ก์„ ๋‚ด๋ ค์ฃผ๊ณ  ๋‹ค์‹œ ์ง„ํ–‰ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— bang์„ true๋กœ ๋ฐ”๊พผ๋‹ค
                    else:
                        bang = True
                        status[y][x] = 1
                        for _ in range(3):
                            status[y + d[_][1]][x + d[_][0]] = 1
# ๋น ์ ธ์•ผํ•  ๋ธ”๋ก์„ ๋นผ๊ณ  ๊ทธ ์œ„์— ๋นˆ ๋ธ”๋ก์„ ์Œ“๋Š”๋‹ค
        for x in range(m):
            for y in range(n):
                if status[y][x]:
                    board[y].pop(x)
                    board[y].insert(0, 0)
                    answer += 1
    return answer
profile
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ํŒŒ์ด์ฌ ๊ทธ๋ฆฌ๊ณ  ์ปดํ“จํ„ฐ์™€ ๋„คํŠธ์›Œํฌ

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