[Python] 27211. 도넛 행성

2023. 4. 25. 15:55·study/백준(BOJ)
728x90

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

 

27211번: 도넛 행성

준겸이는 $N \times M$칸으로 이루어진 도넛 모양의 행성에 살고 있다. 준겸이가 살고 있는 행성에는 위 그림처럼 격자 모양으로 줄이 그어져 있다. 행성의 각 칸은 숲으로 막혀 있거나, 지나갈 수

www.acmicpc.net

 

 

접근법

  • N X M map을 순회하면서 0(빈공간)을 찾음.
  • 찾게 된다면 해당 위치에서 상하좌우가 이동할 수 있는 공간인지 확인.
    -> 이동할 수 있다면 하나의 공간이라 취급하고, 방문했다는 의미로 map의 값을 1로 변환
    -> 이동할 수 없다면 continue
def input_func(N, M):
    arr = [[[] for _ in range(M)] for _ in range(N)]
    for i in range(N):
        arr[i] = list(map(int,input().split()))
    return arr

def solution(map, N, M):
    ans = 0
    dir_list = [[1,0], [-1,0], [0,1], [0, -1]]

    for i in range(N):
        for j in range(M):
            if not map[i][j]: # 빈 공간일 때만 listed에 넣어 주위 탐방
                ans += 1
                listed = [[i,j]]
                while listed:
                    x, y = listed.pop()
                    for a,b in dir_list:
                    	# N 혹은 M을 넘어가면 처음으로 돌아가야하기 때문에 모듈러 연산 사용
                        new_x = (x + a) % N
                        new_y = (y + b) % M

                        if not map[new_x][new_y]: # 0 (빈공간)이라면
                            listed.append([new_x,new_y])
                            map[new_x][new_y] = 1
    print(ans)

def main():
    N, M = map(int, input().split())
    map_list = input_func(N, M)
    solution(map_list, N, M)

if __name__ == '__main__':
    main()


사용된 알고리즘

그래프 이론, 그래프 탐색, 너비 우선 탐색

728x90

'study > 백준(BOJ)' 카테고리의 다른 글

[Python] 2110. 공유기 설치  (0) 2023.04.27
[Python] 7795. 먹을 것인가 먹힐 것인가  (0) 2023.04.27
[Python] 23351. 물 주기  (0) 2023.04.25
[Python] 27922. 현대모비스 입사 프로젝트  (0) 2023.04.19
[Python] 2470. 두 용액  (0) 2023.04.19
'study/백준(BOJ)' 카테고리의 다른 글
  • [Python] 2110. 공유기 설치
  • [Python] 7795. 먹을 것인가 먹힐 것인가
  • [Python] 23351. 물 주기
  • [Python] 27922. 현대모비스 입사 프로젝트
bbooo
bbooo
  • bbooo
    bbooo
    bbooo
  • 전체
    오늘
    어제
    • 분류 전체보기 (142)
      • study (61)
        • 백준(BOJ) (34)
        • Programmers (15)
        • LeetCode (9)
      • AI (4)
        • Paper (0)
      • SSAC X IFFEL (4)
        • DeepML (1)
        • 밑바닥 부터 시작하는 딥러닝 (2)
      • 회고 (46)
      • Error (10)
      • Setting (15)
  • 블로그 메뉴

    • 홈
    • 태그
    • 글쓰기
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    sort
    그리디 알고리즘
    sequence item 0: expected str instance int found
    파이썬
    typeerror: sequence item 0: expected str instance int found
    코딩테스트 준비
    LeetCode
    프로그래머스 석유시추
    programmers 석유시추
    파이썬 석유시추
    python 석유시추
    python 과제 진행하기
    docker
    브루트포스
    풀이 실패
    Counter
    백준
    set
    Til
    개발자 취업
    백준 2470
    투포인터
    문자열을 원하는 길이로
    항해99
    vscode
    99클럽
    파이썬 과제 진행하기
    programmers 과제 진행하기
    두 포인터
    백트래킹
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
bbooo
[Python] 27211. 도넛 행성
상단으로

티스토리툴바