Baekjoon/DFS와 BFS

[백준] 2667 단지번호붙이기 (실버1) / DFS

2023. 4. 17. 13:30

문제요약

나의 코드 및 설명

  • dfs을 통해 지도에서 붙어있는 집(1)의 개수를 카운트할 수 있다.
  • 이 때, 집의 개수를 카운트할 때마다 해당 좌표에 해당하는 집을 없애면서(0) 카운트한다.
  • dfs을 만들었으면, 메인함수에서 지도의 좌표 값이 1인 곳에서 dfs를 호출한다.
def dfs(x,y):
    global count
    board[y][x] = 0
    count += 1 #호출 되었을 때 카운트

    for i in range(4):
        nx = x+dx[i]
        ny = y+dy[i]
        if nx<0 or ny<0 or nx>=n or ny>=n:
            continue
        else:
            #호출 가능한 조건
            if board[ny][nx] == 1 and visited[ny][nx] == 0:
                dfs(nx, ny)


n = int(input())
board = []
for _ in range(n):
    board.append(list(map(int, str(input()))))
visited = [[0]*n for _ in range(n)]
count = 0
ans = []

dx = [0,1,0,-1]
dy = [1,0,-1,0]

for j in range(n):
    for i in range(n):
        if board[j][i] == 1:
            dfs(i,j)
            ans.append(count)
            count = 0

ans.sort()

print(len(ans))
for i in ans:
    print(i)

 

피드백

본래에는 for문 안에서 하위 함수를 호출하기 전에 카운트를 해주었다. 이렇게 했는데도 예제 출력값은 제대로 나왔으나 이상하게 틀렸다는 판정을 받았다.. 풀이를 참고하여 dfs가 호출되고 나서 카운트를 해주도록 코드를 수정하였더니 정답 판정을 받을 수 있었다. 

처음 작성했던 코드.. for문안에서 count를 증가시키고 좌표의 끝에 도달했을 때 리턴하였다.
풀이를 참고하여 수정한 코드.. dfs가 호출되었을 때 count를 증가시킨다. 별도의 리턴 없이도 count 값이 저장된다.

 

 

'Baekjoon > DFS와 BFS' 카테고리의 다른 글

[백준] 1697 숨바꼭질 (실버1) / BFS  (0) 2023.04.21
[백준] 1012 유기농 배추 (실버2) / BFS (방문체크 위치 정확히!)  (0) 2023.04.21
[백준] 1926 그림 (실버1) / BFS, 런타임에러(ValueError) 해결  (0) 2023.04.19
[백준] 2178 미로 탐색 (실버1) / BFS  (0) 2023.04.17
[백준] 1260 DFS와 BFS (실버2)  (0) 2023.04.17
'Baekjoon/DFS와 BFS' 카테고리의 다른 글
  • [백준] 1012 유기농 배추 (실버2) / BFS (방문체크 위치 정확히!)
  • [백준] 1926 그림 (실버1) / BFS, 런타임에러(ValueError) 해결
  • [백준] 2178 미로 탐색 (실버1) / BFS
  • [백준] 1260 DFS와 BFS (실버2)
hellosonic
hellosonic
hellosonic
꾸준함
hellosonic
전체
오늘
어제
  • 분류 전체보기 (285)
    • SSAFY (4)
    • 프로그래머스 데브코스 (26)
    • Diary (1)
    • JavaScript (20)
    • ToyPJ (13)
      • Python-Django (13)
    • CS지식 (11)
      • 자료구조 (5)
      • 개발 상식 (2)
      • 네트워크 (4)
    • Baekjoon (141)
      • IM Level (57)
      • DFS와 BFS (21)
      • 백트래킹 (21)
      • DP (3)
      • 이분탐색 (4)
      • 구현 (14)
    • Programmers (13)
      • Lv1 (4)
      • Lv2 (9)
    • SWEA (SW Expert Academy) (52)
      • D1 (5)
      • D2 (7)
      • D3 (40)
    • 이코테 (4)
    • Grammar (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기
  • 관리자

공지사항

인기 글

태그

  • SWEA D2
  • 프로그래머스
  • 파이썬 1269
  • 백준 2999
  • 리액트 todolist
  • 백준 14891
  • 구현
  • 파이썬
  • 프로그래머스 데브코스
  • 파이썬 1946
  • 백준
  • 파이썬 1436
  • 파이썬 11478
  • SWEA D3
  • 백준 18870
  • 자바스크립트 기본기
  • 코딩부트캠프
  • 국비지원교육
  • 백준 5212
  • 자바스크립트
  • SWEA
  • 이코테
  • 그리디
  • javascript ux
  • 프론트엔드 데브코스
  • JS
  • SWEA 파이썬
  • 백준 1157
  • SWEA/D3
  • 파이썬 2529

최근 댓글

최근 글

hELLO · Designed By 정상우.
hellosonic
[백준] 2667 단지번호붙이기 (실버1) / DFS
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.