작성
·
97
답변 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 인턴입니다.
정구호님께서 질문하신 내용을 기반으로, DFS 알고리즘 강의에서 다루는 ‘침투’와 ‘섬의 개수’ 문제에 대해 차이점과 입력 방법에 대해 설명드리겠습니다.
침투 문제에서 연속된 숫자 입력 방식:
row = input()
로 처리하여 연속된 문자열을 읽고 각 문자나 숫자를 처리하는 것이 가능합니다.섬의 개수 문제에서의 입력 방식 차이:
row = list(map(int, input().split()))
을 사용하여 한 줄에 있는 여러 수를 리스트에 담아 처리합니다. 이는 문제의 설명에 따라, 입력의 각 요소가 어떻게 분리되어 있는지에 따라 결정되는 부분입니다.이와 관련해서 더 자세히 알고 싶으시면, 이전에 비슷한 문제에 대해 논의한 질문들을 참조하면 도움이 될 수 있습니다:
이 링크들은 주로 다양한 입력 방식에 따라 어떻게 코드를 작성하고 문제를 접근해야 하는지에 대한 설명을 포함하고 있습니다.
문제의 입력 형식을 이해하기 위해서는 항상 주어진 문제의 설명과 예제를 꼼꼼히 읽는 것이 중요합니다. 문제 설명에 따라 입력 데이터를 제대로 처리할 수 있게될 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
안녕하세요 cgh7165499님!
row = list(map(int, input().split()))
는 한 줄의 입력을 리스트로 받아오는 단계일 뿐이고, 이 데이터를 우리가 사용하는 map_
이라는 2차원 배열에 정확한 위치에 반영해줘야 합니다. 즉,
for j in range(1, M + 1): map_[i][j] = (row[j - 1] == 1)
이 부분은 row
의 값을 실제 지도(map_
)의 좌표에 맞게 복사하면서 동시에 1
인지 여부만을 불리언 형태로 저장하는 코드입니다. 이렇게 따로 나눈 이유는:
문제에서 padding(여백)을 둘 필요가 있어 map_을 1-indexed로 구성했기 때문이고,
입력값이 꼭 0
과 1
이 아닐 수도 있으므로, 조건을 명시적으로 걸어주는 과정이 필요하기 때문입니다.
따라서 단순히 row
를 map_
에 넣는 것만으로는 원하는 형태의 그래프 구성이 되지 않기 때문에, 이 추가 코드가 필요합니다!
문제의 글에서 데이터가 어떻게 들어올지 추측 한다는 말인 건가요?
하나더 질문이 있는데 섬의개수에서
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))들은 왜 구현한건지 이해가 잘안됩니다