vl0612   4년 전

아래와 같은 코드에서 (  https://koosaga.com/157  에 있는 코드에서 트라이 구하는 부분입니당)


auto &i:v 에서 i가 string이 되고

auto &j:i에서 j가 char이 되므로

trie[p][j]에서 j가 아스키 26은 가뿐히 넘어갈 텐데 어떻게 동작하는 건지 궁금합니다.

포인터의 세계 너모 알쏭달쏭하네요ㅎ...

upple1   4년 전

이해하신게 맞고 코드 작성자 분이 간단하게 작성하다 아무래도 실수하신 것 같습니다.

lim551   4년 전

아스키문자 26 이하로 이루어진 문자열인가봅니다 ㅋㅋ

vl0612   4년 전

놀랍게도 예제 넣어보면 매우 잘 작동합니다...!

글의 코드는 제가 대강 궁금한 부분만 간추린 거라 다른 중요한 부분을 생략햇을 수도 있는데

원본 코드 링크 아래와 같습니당! ‘ㅁ’

코드 원본 ::

https://gist.github.com/koosag...


upple1   4년 전

메모리가 연속적이라서 우연히 작동하는거 아닐까요? 제한에 가까우면 에러날것 같은데.. 워낙 고수분이 짜신거라 제가 모르는 뭔가가 있을 수도 있을것 같네요

lovinix   4년 전

어차피 모든 char에 대해 똑같은 범위만큼 shifting된다고 생각하면 될거같아요.

쿼리도 똑같이 날리시는거보니 의도한거같기도합니다.

vl0612   4년 전

문법적 측면에서 왜 shifting 되는 걸까요?

적당히 비슷하게 아래와 같은 코드를 작성햇을 경우 


각각의 i는 a ,  s, d , f를 출력하였으며 arr 을 출력하는 과정에서도 Shifting이 일어나지 않아서요 ㅎㅎㅎㅎㅁㅎㅎㅎㅎㅎㅎㅎㅎ(멘붕

djm03178   4년 전

그냥 2차원 배열이 연속적이라, 1차원에서 넘어선 주소는 2차원에서의 다음 인덱스의 주소와 같기 때문에 문제가 발생하지 않는 것입니다.

upple1   4년 전

의도한게 맞는 것 같네요. 고수들의 생각을 따라잡기 힘들군요..

vl0612   4년 전

와 감사합니다 ㅋㅋㅋㅋ  MAXN = 100005 인게 그냥 넉넉히 잡은 게 아니고 shift를 고려한 것이었군요 ㄷㄷㄷ

댓글을 작성하려면 로그인해야 합니다.