본문 바로가기

카테고리 없음

브루트포스 level간 자료구조 전달

  • 각 level에서 수정되는 자료구조는 call by value로 전달해야 한다.
  • 변수 종류별 전달 방법
    • 배열이 아닌 변수
      • 브루트포스 함수의 인자로 넘겨준다(call by value)
    • 배열인 변수
      • 벡터를 사용해야만 call by value가 가능하다
      • 배열은 call by value가 불가능하다(call by reference만 가능)
      • 배열의 수정을 undo하기 용이한 경우(전체를 memcpy하는 것보다 저렴한 경우)
        • BOJ 색종이 붙이기
          • 색종이 크기만큼만 memset
        • BOJ 괄호 추가하기
          • 추가된 char만큼 삭제
      • 배열 전체가 수정되는 경우(undo 어려움)
        • 배열 차원에 (level + 1) 차원을 더하여 전역에 선언한다.
        • level간 memcpy로 call by value를 모방한다.
        • BOJ 주사위 윷놀이
          • 이번판에 저번판 윷놀이판 상태를 복사해온 뒤 play
      • 배열의 일부만 수정되는 경우(undo 어려움)
        • 배열 일부 차원에 level 차원을 더하여 전역에 선언한다.
        • level 초반에 수정 전 원본을 자료구조에 담아두고
        • level 후반에 수정된 원본에 자료구조를 덮어씌운다.
        • SWEA 보호필름
          • 매번 수정 범위가 행으로 특정된다.