[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)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

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

티스토리툴바