[Python] 4963번 섬의 개수 / DFS.ver

2025. 4. 13. 02:27·coding test/Baekjoon

https://www.acmicpc.net/problem/4963

 

이전에 재귀로 풀었던 함수를 이번에는 스택을 사용하여 풀어보았다.

2025.04.08 - [coding test/백준] - [Python] 4963번 섬의 개수 / 재귀함수.ver

# dfs-stack
dx=[-1,-1,-1,0,0,1,1,1]
dy=[1,0,-1,1,-1,1,0,-1]

def dfs(y,x):
    board[y][x]=0 #방문처리

    stack=[[y,x]]
    while stack:
        s=stack.pop()

        for i in range(8):
            ny=s[0]+dy[i]
            nx=s[1]+dx[i]
            if 0<=ny<h and 0<=nx<w:
                if board[ny][nx]==1:
                    board[ny][nx]=0
                    stack.append([ny,nx])

# 1. 입력값 받기
while True:
    w,h=map(int,input().split())

    if w==0 and h==0:
        break
    
    board=[list(map(int,input().split())) for _ in range(h)]

    # 2. 자료형 준비 

    # 탐색시작
    cnt=0
    for i in range(h):
        for j in range(w):
            if board[i][j]==1:
                # 3. dfs-stack
                dfs(i,j) 
                cnt+=1

    # 4. 정답 출력
    print(cnt)

 

재귀로 하였을 때보다 시간이 빨라진 것을 볼 수 있었다.

'coding test > Baekjoon' 카테고리의 다른 글

[Python] 2667번 단지번호붙이기  (0) 2025.04.23
[Python] 2210번 숫자판 점프  (0) 2025.04.13
[Python] 2583번 영역 구하기 / DFS  (0) 2025.04.13
[Python] 4963번 섬의 개수 / 재귀함수.ver  (0) 2025.04.08
[Python] 2609번 최대공약수와 최소공배수  (0) 2025.02.24
'coding test/Baekjoon' 카테고리의 다른 글
  • [Python] 2667번 단지번호붙이기
  • [Python] 2210번 숫자판 점프
  • [Python] 2583번 영역 구하기 / DFS
  • [Python] 4963번 섬의 개수 / 재귀함수.ver
wish404
wish404
자동 로그
  • wish404
    wish-log
    wish404
    • 홈
    • 태그
    • 방명록
    • github
    • 분류 전체보기 (75)
      • log (8)
        • 블로그 관리 (5)
        • 에러 모음 (2)
      • coding test (47)
        • Algorithm (4)
        • Baekjoon (34)
        • SW Expert Academy (6)
        • etc (3)
      • 프로그래밍 언어 (7)
        • JAVA (7)
      • 데이터 엔지니어링 (5)
        • Kafka (0)
        • Spark (4)
        • Airflow (1)
        • Elasticsearch (0)
      • 머신러닝&딥러닝 (3)
        • Kaggle 스터디 (3)
        • 논문 리뷰 (0)
        • MLOps (0)
      • 신입 개발자가 되기까지 (5)
        • 취준일기 (1)
        • SSAFY (2)
        • 프로젝트 (1)
        • CS 공부 (1)
  • 인기 글

  • 태그

    SSAFY
    틀린문제
    dijk
    후위순회
    복습
    Dijkstra
    벨만포드
    전위순회
    그리디 알고리즘
    다익스트라
    플로이드워샬
    그리디
    최단 경로
    싸피
    중위순회
    BFS
    heapq
    dfs
    복습해야지
    dp
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
wish404
[Python] 4963번 섬의 개수 / DFS.ver
상단으로

티스토리툴바