14502번 - 연구소
연구소 문제는 푸는 도중 머리를 굴려도 도저히 몰라서 질문 드립니다.
(참고로 아래 코드는 다른 사람이 푼 문제를 참고하여 작성하였습니다..)
문제를 푸는 방향은 이렇게 하였습니다.
1.지도를 입력받는다.
2. '0'인 안전 영역의 위치를 벡터에 넣고, 그것을 뽑아 기둥을 지도에 표시한다.
3. 그 지도에 바이러스는 퍼트린다(dfs로)
4. '0'인 부분을 체크하여 안전영역의 크기가 가장 높은 것을 찾는다.
2~4번을 반복한다.
제가 어려워 하는 부분은 44,45,46번 줄의 코드부분입니다.
문제의 크기가 작기 때문에 브루트 포스(완전탐색)접근 방법으로 가는 것은 알겠으나,
각 3개의 기둥을 뽑을 때, for문 형식을 저렇게 생각할 수 있는 방법이 따로 존재하는 것입니까??
요약하자면, 44,45,46번 코드를 작성하는 노하우를 알고 싶습니다..
읽어주셔서 감사합니다.
쉽게 생각해서 전체에서 3개를 뽑는 모든 경우의 수를 해보는 것입니다.
뽑는 순서는 중요하지 않으므로 중복된 경우를 제외하기 위해 i, j, k의 순서를 정하고 항상 i<j<k가 되도록 해서, j는 i+1부터 시작하게, k는 j+1부터 시작하게 한 거고요.
쉽게 설명해주셔서 감사합니다!
댓글을 작성하려면 로그인해야 합니다.
persona_k 5년 전
연구소 문제는 푸는 도중 머리를 굴려도 도저히 몰라서 질문 드립니다.
(참고로 아래 코드는 다른 사람이 푼 문제를 참고하여 작성하였습니다..)
문제를 푸는 방향은 이렇게 하였습니다.
1.지도를 입력받는다.
2. '0'인 안전 영역의 위치를 벡터에 넣고, 그것을 뽑아 기둥을 지도에 표시한다.
3. 그 지도에 바이러스는 퍼트린다(dfs로)
4. '0'인 부분을 체크하여 안전영역의 크기가 가장 높은 것을 찾는다.
2~4번을 반복한다.
제가 어려워 하는 부분은 44,45,46번 줄의 코드부분입니다.
문제의 크기가 작기 때문에 브루트 포스(완전탐색)접근 방법으로 가는 것은 알겠으나,
각 3개의 기둥을 뽑을 때, for문 형식을 저렇게 생각할 수 있는 방법이 따로 존재하는 것입니까??
요약하자면, 44,45,46번 코드를 작성하는 노하우를 알고 싶습니다..
읽어주셔서 감사합니다.