최대 1 분 소요

사용 언어: Python3

문제

image
프로그래머스에서 위 문제가 안보여서 아래 풀이에서 입력은 하드코딩으로 넣었다..!

풀이

내 풀이

import sys
sys.setrecurionlimit(10**6)

dx, dy = [0,-1,0,1], [1,0,-1,0]
def DFS(x, y):
    if visited[x][y]: # ✅ visited 체크
        return
    visited[x][y] = 1
    for w in range(4):
        xx, yy = x+dx[w], y+dy[w]
        if xx<0 or xx>=N or yy<0 or yy>=M:
            continue
        if board[xx][yy] != board[x][y] or visited[xx][yy]: # ✅ visited 체크
            continue
        DFS(xx, yy)

N, M = 2, 3
board = [[1,2,3],[3,2,1]]
visited = [[0] * M for _ in range(N)]

cnt = 0
for i in range(N):
    for j in range(M):
        if visited[i][j]: # ✅ visited 체크
            continue
        cnt += 1
        DFS(i ,j)
print(cnt)


💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기