음료수 얼려 먹기-[이것이 취업을 위한 코딩 테스트다]

2023. 9. 4. 18:25·코딩테스트/이것이취업을위한코딩테스트다[Python]

📖문제

N x M 크기의 얼음 틀이 있다. 구멍이 뚫려 있는 부분은 0, 칸막이가 존재하는 부분은 1로 표시된다. 구멍이 뚫려 있는 부분끼리 상, 하, 좌, 우로 붙어 있는 경우 서로 연결되어 있는 것으로 간주한다. 이때 얼음 틀의 모양이 주어졌을 때 생성되는 총 아이스크림의 개수를 구하는 프로그램을 작성하시오.
예시) 다음의 4 x 5 얼음 틀 예시에서는 아이스크림이 총 3개 생성된다.

입력 조건

  • 첫 번째 줄에 얼음 틀의 세로 길이 N과 가로 길이 M이 주어진다.
    (1 <= N, M <= 1,000)
  • 두 번째 줄부터 N + 1번째 줄까지 얼음 틀의 형태가 주어진다.
  • 이때 구멍이 뚫려있는 부분은 0, 그렇지 않은 부분은 1이다.

출력 조건

  • 한 번에 만들 수 있는 아이스크림의 개수를 출력한다.

Another answer

import sys
input= sys.stdin.readline

# N, M을 공백을 기준으로 구분하여 입력 받기
n, m = map(int, input().split())

# 2차원 리스트의 맵 정보 입력 받기
graph = []
for i in range(n):
    graph.append(list(map(int, input())))

# DFS로 특정한 노드를 방문한 뒤에 연결된 모든 노드들도 방문
def dfs(x, y):
    # 주어진 범위를 벗어나는 경우에는 즉시 종료
    if x <= -1 or x >= n or y <= -1 or y >= m:
        return False
    # 현재 노드를 아직 방문하지 않았다면
    if graph[x][y] == 0:
        # 해당 노드 방문 처리
        graph[x][y] = 1
        # 상, 하, 좌, 우의 위치들도 모두 재귀적으로 호출
        dfs(x - 1, y)
        dfs(x, y - 1)
        dfs(x + 1, y)
        dfs(x, y + 1)
        return True
    return False

# 모든 노드(위치)에 대하여 음료수 채우기
result = 0
for i in range(n):
    for j in range(m):
        # 현재 위치에서 DFS 수행
        if dfs(i, j) == True:
            result += 1

print(result) # 정답 출력

dfs를 이용하여 푸는 문제로, 재귀를 이용한다. 우선 범위가 넘어가는 경우는 예외처리를 해주면서 방문하지 않은 칸에 도달하면 그 상하좌우 칸을 모두 재귀로 접근한다. 

728x90

'코딩테스트 > 이것이취업을위한코딩테스트다[Python]' 카테고리의 다른 글

위에서 아래로-[이것이 취업을 위한 코딩 테스트다]  (0) 2023.09.05
미로 탈출-[이것이 취업을 위한 코딩 테스트다]  (0) 2023.09.04
게임 개발-[이것이 취업을 위한 코딩 테스트다]  (0) 2023.09.04
왕실의 나이트-[이것이 취업을 위한 코딩 테스트다]  (0) 2023.09.04
1이 될 때까지-[이것이 취업을 위한 코딩 테스트다]  (0) 2023.09.04
'코딩테스트/이것이취업을위한코딩테스트다[Python]' 카테고리의 다른 글
  • 위에서 아래로-[이것이 취업을 위한 코딩 테스트다]
  • 미로 탈출-[이것이 취업을 위한 코딩 테스트다]
  • 게임 개발-[이것이 취업을 위한 코딩 테스트다]
  • 왕실의 나이트-[이것이 취업을 위한 코딩 테스트다]
창빵맨
창빵맨
  • 창빵맨
    Let's be Developers
    창빵맨
    로그인/로그아웃
  • 전체
    오늘
    어제
    • 분류 전체보기 (471)
      • 알쓸신잡 (79)
      • ML & DL (85)
        • Computer v.. (22)
        • NLP (22)
        • 파이썬 머신러닝 완.. (3)
        • 개념정리 (38)
      • 리눅스 (21)
      • 프로젝트 (29)
        • 산불 발생 예측 (6)
        • 음성비서 (12)
        • pdf 병합 프로그.. (0)
        • 수위 예측 (5)
        • 가짜 뉴스 분류 (5)
        • 전력사용량 예측 (1)
      • 코딩테스트 (217)
        • 프로그래머스[Pyt.. (17)
        • 프로그래머스[Fai.. (3)
        • 백준[Python] (160)
        • 이것이취업을위한코딩.. (18)
        • 파이썬 알고리즘 (19)
      • 데이터분석실습 (25)
        • 데이터 과학 기반의.. (18)
        • 헬로 데이터 과학 (7)
      • 메모장 (0)
      • 잡담 (4)
  • Personal

    GITHUB
    Instagram
  • 공지사항

  • 인기 글

  • 태그

    백준
    이분탐색
    나동빈
    DFS
    BFS
    이것이취업을위한코딩테스트다
    dp
    이코테
    그리디
    파이썬
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3

HOME

HOME

상단으로

티스토리툴바