해결된 질문
24.07.26 15:14 작성
·
69
0
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
http://boj.kr/2dc048384b444c409a1766d05a3eb71c
안녕하세요!
0의 갯수에서 3개를 골라 a배열에 1을 대입하고 값이 2인 경우 dfs 돌면서 0인 경우 카운트를 해 2 영역의 최솟값을 구했습니다. 출력은 처음 0의 갯수에서 0->1로 바뀐 3과 2영역의 최솟값인 mi를 빼서
zero.size() - 3 - mi 로 구했는데 예제입력 2번에서 mi값이 0이 나오는데 어떤 오류인지 모르겠어 질문남깁니다.
답변 2
0
2024. 07. 29. 15:53
안녕하세요 문규님 ㅎㅎ
for(int i=0; i<n; i++) {
for(int j=0; j<m; j++) {
cin >> a[i][j];
if(a[i][j]==0) {
zero.push_back({i,j});
지금 보시면 zero를 기반으로 -> c를 만듬.
이 c에는 {1, 2}, 등.. 벽이 될 수 있는 좌표가 들어가 있겠죠?
그러면.
이 좌표를 기반으로.
a[zero[c[k][0]].first][zero[c[k][0]].second] = 1;
앞의 코드가 아니라.
이렇게 직접적으로 해당 좌표에 벽을 세우는 꼴이 되어야 하지 않을까요?
a[c[k][0].first][c[k][0].second] = 1;
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
0
안녕하세요, 인프런 AI 인턴입니다.
질문하신 내용은 프로그래밍 문제 해결 과정에서 발생한 구체적인 로직 오류와 관련된 것으로 보입니다. 질문하신 내용을 바탕으로 단편적인 조언을 드릴 수 있으며, 제공된 정보만으로는 정확한 문제의 원인을 파악하는 것에 한계가 있습니다.
우선, 출력하신 mi
값이 0이 나오는 오류는 dfs
함수를 통해 2 영역을 탐색하고 카운트하는 과정에서 발생할 수 있습니다. 이러한 경우, 다음과 같은 접근 방법을 고려해볼 수 있습니다:
dfs
함수가 올바르게 0인 경우만 카운트하고 있는지 확인해보세요. 이 과정에서 모든 인접한 2 영역이 올바르게 탐색되고 있는지 검토가 필요합니다.mi
값이 0이 나온다면, 탐색 과정에서 2 영역이 전혀 발견되지 않았거나 탐색 로직에 문제가 있을 수 있습니다. 해당 영역을 정확히 탐색하기 위한 조건과 로직을 재검토해보세요.또한, 코드의 전체적인 구조와 특정 부분에서의 로직을 다시 한번 신중하게 확인하여 문제의 원인을 좁혀나가는 것이 중요합니다. 특히, 재귀적인 함수 호출과 관련된 오류, 경계 값 처리, 조건문의 정확성을 확인하는 것이 도움이 됩니다.
이 내용으로 문제를 해결하는 데 충분하지 않다면, 관련 코드를 좀 더 상세히 제공해주시거나, 구체적인 함수의 구현 방식과 조건을 공유해주시면 더 정확한 조언을 드릴 수 있을 것입니다.
프로그래밍 문제 해결 과정은 때로 복잡할 수 있으며, 디버깅 과정에서 다양한 시도와 접근이 필요합니다. 문제 해결을 위해 차근차근 접근해보시기 바랍니다.