작성
·
113
0
안녕하세요 로또번호 셔플 구현 설명에서 로또번호에 필요한 로직은 "탐색"과 스왑이라고 되어있고,
플로우에서도 탐색이 O(1)인 배열을 사용해야한다고 설명이 되어있더라구요
근데 배열으 탐색이 O(n)이고, 구현 코드를 봐도 배열값을 참조해서 스왑핑 하는 내용이더라구요
그래서 설명이 탐색이 아닌 참조가 맞지않을까 생각했습니다.
혹시 제가 잘못이해한거라면 답변 부탁드립니다!
답변 1
1
안녕하세요 ㅎㅎ
네 수강생님 말씀이 맞습니다 ㅠㅠ 탐색이 아니라 참조인데... 죄송합니다.
수정된 부분은 다음과 같습니다.
로또번호 7개 셔플에 필요한 로직은 딱 두가지 참조와 swap입니다. 7개의 수 중 자유롭게 랜덤적으로 2개의 수를 참조하고 그 2개의 수를 swap하는 로직이 필요합니다.
즉 이는 다음과 같은 플로우를 기반으로 배열이란 자료구조를 사용해야 한다는 답을 갖게 됩니다.
삽입이나 삭제가 필요하지 않습니다.
로또번호는 순차적으로 구성되어있기 때문에 이에 관한 자료구조는 배열, 연결리스트가 있습니다.
스택과 큐를 생각할 수 있지만 자유로이 랜덤적으로 2개를 참조해 swap을 해야하고 이 때문에 랜덤접근이 불가능한 자료구조는 배제하게 됩니다.
이중에서 참조(random access)에 O(1)인 배열을 사용하는 것이 좋습니다.
이부분은 제가 이번주내로 수정하여 수정업로드를 하도록 하겠습니다.
제 틀린 부분을 지적해주셔서 정말 감사를 드립니다.
강사 큰돌 올림.