ZIMBABWE 질문 드립니다.

  • 임정민
    임정민

    웨브바짐 문제 책 코드 9.17에서 같은 숫자는 한번만 선택한다.
    부분의 조건문이 이해가 되지 않습니다.

                if (next > 0 && digits[next - 1] == digits[next] && (taken & (1 << (next - 1))) ==0) {
                    continue;
                }
    

    이 부분 마지막 (taken & (1 << (next - 1))) ==0
    에서 이전이 선택이 되지 않은 경우에 왜 continue를 해주는건가요?
    선택이 안됬으니 한번만 선택하기 위해선 이번단계에 선택을 하면 되는게 아닌지요?


    6년 전
1개의 댓글이 있습니다.
  • paradise7
    paradise7

    구종만 님의 책(알고리즘 문제 해결 전략)에 기술 되어 있는 내용있습니다만, 주어진 숫자의 나열이 정렬되어 있을 때, 이것을 가지고 만든 숫자가 유일하게 한번만 선택되기 위해서 입니다.
    그런데, 숫자가 중복이 되는 경우, 같은 숫자를 두번 셀 수 있기 때문에, 연속적으로 같은 숫자를 포함하는 숫자나열이 딱 한 번만 계산하기 위해서, 이전에 선택되었다면 숫자 나열 대상으로 판단하며, 그렇지 않으면 continue 하는 것이라고 생각하시면 됩니다.


    6년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.