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

스타현이님의 프로필 이미지
스타현이

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

2-E와 분할정복(Divide & Conquer)

2-E 분할정복 질문

작성

·

133

1

http://boj.kr/9836321748734ee289405c3434a83f5c

아래 질문 하신분들 코드를 보다가 정리를 해보니

이방법이 외우기 쉬운것 같은데요.

일반적인 DFS, BFS 에서는 오버플로우 체크(방문여부 등등..)를 하는 코드가 있는데요.

위 코드로 할 경우에는 오버플로우 또는 반례를 생각하지 않아도 되는걸까요?

답변 1

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 현이님 ㅎㅎ

 

네 맞습니다.

  for (int i = 0; i < 4; i++) {
    int ny = y + dy[i] * (size / 2);
    int nx = x + dx[i] * (size / 2);
    ret += quard(ny, nx , size / 2);

이 경우에는 오버플로가 발생하지 않는 코드라서 그렇습니다. 딱 배열 안에 들어가는 범위로 ny, nx가 정해지기 때문에 이 코드의 경우 오버플로체킹을 안해도 됩니다.




또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.


스타현이님의 프로필 이미지
스타현이

작성한 질문수

질문하기