인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

정구호님의 프로필 이미지

작성한 질문수

[파이썬/Python] 문과생도 이해하는 DFS 알고리즘! - 입문편

섬의 개수 (백준 4963)

침투/섬개수 질문

해결된 질문

작성

·

70

1

침투/섬의개수 질문드립니다.

 

  1. 침투 문제에서는 연속된 숫자가 들어와서 row=input() 이렇게 표현 하셨는데 연속된 숫자가 들어올거라는 것을 어떻게 유추할수 있을까요?

 

  1. 섬의개수 문제에서는 침투와 달리 row=list(map(int,input().split())) 이렇게 표현하셨는데, 침투랑 동일하게 row=input()으로 표현해도 되는거 아닌가요? 연결정보 채우는거에 대한 언급을 어떻게 찾는지 궁금합니다

 

 

 

답변 2

1

개발자로 취직하기님의 프로필 이미지

안녕하세요 정구호님 🙂

입력 형태는 문제에서 주어지는 예제 입력 형태를 보고 설명과 함께 유추할 수 있습니다! 대부분의 경우 이 부분은 헷갈리지 않도록 명확하게 적어주고 있어서, 예제 형태를 그대로 적용하시면 될 것 같습니다!

 

그리고 다음 추가 질문에 대해 답변 드리자면

하나더 질문이 있는데 섬의개수에서
for i in range(1,H+1)

row = list(map(int,input().split()))

이 부분으로 그래프를 채울수 있는거 아닌가요? 이 코드 이후에 것(for j in range(1, M + 1): map_[i][j] = (row[j - 1] == 1))들은 왜 구현한건지 이해가 잘안됩니다

row 변수는 한 행에 해당하는 입력 값을 하나의 list로 입력 받은 것이고, 이 정보를 다시 map에 반영하기 위해서는 row list의 값을 확인하여 하나씩 입력해줘야 하기 때문에 이렇게 넣었습니다!

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다.

정구호님께서 질문하신 내용을 기반으로, DFS 알고리즘 강의에서 다루는 ‘침투’와 ‘섬의 개수’ 문제에 대해 차이점과 입력 방법에 대해 설명드리겠습니다.

  1. 침투 문제에서 연속된 숫자 입력 방식:

    • 이 문제에서 주어진 입력은 종종 2D 배열 형태로, 각 줄(행)에 대해 연속적으로 데이터가 주어질 가능성이 높습니다. 기본적으로 알게된 것처럼, 문제가 주어진다면 문제의 설명이나 예제를 통해 입력 데이터의 형식을 제시받는 경우가 많습니다. 일반적으로 문제에서 입력 형식을 명시하기 때문에 row = input()로 처리하여 연속된 문자열을 읽고 각 문자나 숫자를 처리하는 것이 가능합니다.
  2. 섬의 개수 문제에서의 입력 방식 차이:

    • 반면에 ‘섬의 개수’ 문제에서는 보통, 각 요소가 공백으로 구분된 형태로 제공됩니다. 그래서 row = list(map(int, input().split()))을 사용하여 한 줄에 있는 여러 수를 리스트에 담아 처리합니다. 이는 문제의 설명에 따라, 입력의 각 요소가 어떻게 분리되어 있는지에 따라 결정되는 부분입니다.

이와 관련해서 더 자세히 알고 싶으시면, 이전에 비슷한 문제에 대해 논의한 질문들을 참조하면 도움이 될 수 있습니다:

이 링크들은 주로 다양한 입력 방식에 따라 어떻게 코드를 작성하고 문제를 접근해야 하는지에 대한 설명을 포함하고 있습니다.

문제의 입력 형식을 이해하기 위해서는 항상 주어진 문제의 설명과 예제를 꼼꼼히 읽는 것이 중요합니다. 문제 설명에 따라 입력 데이터를 제대로 처리할 수 있게될 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

정구호님의 프로필 이미지
정구호
질문자

문제의 글에서 데이터가 어떻게 들어올지 추측 한다는 말인 건가요?
하나더 질문이 있는데 섬의개수에서
for i in range(1,H+1)

row = list(map(int,input().split()))

이 부분으로 그래프를 채울수 있는거 아닌가요? 이 코드 이후에 것(for j in range(1, M + 1): map_[i][j] = (row[j - 1] == 1))들은 왜 구현한건지 이해가 잘안됩니다