sklubmk / sklubmk.github.io

0 stars 1 forks source link

[프로그래머스] (LV4) 미로 탈출 - JK's Devlog #70

Open sklubmk opened 3 years ago

sklubmk commented 3 years ago

https://sklubmk.github.io/2021/07/15/28bed7b50dc1/

미로 탈출Python3

lllilllilllilili commented 3 years ago

안녕하세요.

포스팅 잘 보았습니다. 감사합니다.

코드 내용 중 이해가 잘 안되는 부분이 있어서 질문 남겨보아요..

isTrapOn = (state & (1<<trap_dict[node_i]))>>trap_dict[node_i]

trap_dict가 left_shift, right_shift 작업을 하게 되는데 이게 문제상에서 어떻게 해석되는지 잘 이해가 안되어서요, 어떤식으로 접근을 해야하는것인지 여쭤봅니다.

시간 내주셔서 정말 감사 드립니다.

sklubmk commented 3 years ago

@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을 뜻합니다.

도움이 되셨으면 좋겠네요!

lllilllilllilili commented 3 years ago

감사합니다. 정말 많은 도움이 되었습니다. 😀 재능 기부 감사드립니다.

kobeomseok95 commented 2 years ago

감사합니다 도움 많이 되었습니다..!