Open sklubmk opened 3 years ago
안녕하세요.
포스팅 잘 보았습니다. 감사합니다.
코드 내용 중 이해가 잘 안되는 부분이 있어서 질문 남겨보아요..
isTrapOn = (state & (1<<trap_dict[node_i]))>>trap_dict[node_i]
trap_dict가 left_shift, right_shift 작업을 하게 되는데 이게 문제상에서 어떻게 해석되는지 잘 이해가 안되어서요, 어떤식으로 접근을 해야하는것인지 여쭤봅니다.
시간 내주셔서 정말 감사 드립니다.
@lllilllilllilili
우선 state는 현재 상태를 나타냅니다. 예를들어 '1101'이라고 하겠습니다.
이 네개의 함정 중 가장 앞쪽에 위치한 함정의 작동상태가 궁금한 상황이라고 가정하겠습니다.
다른 함정들의 작동여부와 상관없이 맨 앞쪽 함정만 확인하기 위해서는 '1101'에 '1000'을 & 연산 합니다. 그러기 위해 '1'을 왼쪽으로 3번 shift 합니다.
shift한 '1000'에서 0과 &한 값은 모두 0이 되므로 다른 함정들은 자연스럽게 연산에서 제외됩니다.
'1000'에서 맨 앞 1로 비교한 함정노드가 만약 ON(1)상태면 1을, OFF(0)상태면 0을 반환하므로, 이 결과는 해당 함정의 ON/OFF 상태와 완전히 동일합니다. 따라서 '1000'이 반환됩니다.
이를 다시 3번만큼 오른쪽 shift해서 '1'을 가집니다.
이 결과값은 결국 0 아니면 1의 값을 갖고, 이는 특정 함정의 ON/OFF를 나타내는 결과값, 즉 isTrapOn을 뜻합니다.
도움이 되셨으면 좋겠네요!
감사합니다. 정말 많은 도움이 되었습니다. 😀 재능 기부 감사드립니다.
감사합니다 도움 많이 되었습니다..!
https://sklubmk.github.io/2021/07/15/28bed7b50dc1/
미로 탈출Python3