@@ -38,7 +38,7 @@ public ConnectQuizDto generate(Graph graph) {
3838 // 최종 문제 리스트
3939 List <ConnectQuizDto .ConnectQuiz > quizList = new ArrayList <>();
4040 // 이미 사용한 노드 Id 기록용 (중복 방지)
41- Set <Integer > usedNodeIds = new HashSet <>();
41+ Set <String > usedNodeIds = new HashSet <>();
4242
4343 // 문제 3개 만들기
4444 for (int i = 0 ; i < 3 ; i ++) {
@@ -53,47 +53,42 @@ public ConnectQuizDto generate(Graph graph) {
5353 }
5454
5555 // connect 퀴즈 문제 생성
56- private static void createConnectQuiz (Random random , List <NodeDto > nodeDtoList , List <ConnectQuizDto .ConnectQuiz > quizList , Set <Integer > usedNodeIndices ) {
57- if (usedNodeIndices .size () >= nodeDtoList .size ()) {
58- // 모든 노드를 다 사용했으면 추가 생성 불가
59- return ;
60- }
56+ private static void createConnectQuiz (Random random , List <NodeDto > nodeDtoList ,
57+ List <ConnectQuizDto .ConnectQuiz > quizList , Set <String > usedNodeIds ) {
58+ if (usedNodeIds .size () >= nodeDtoList .size ()) return ;
6159
62- int questionTargetId ;
60+ NodeDto targetNode ;
61+ String targetId ;
6362
64- // nodeDtoList 중 1개의 id로 랜덤 선택 ( 중복 방지)
63+ // node의 ID(String) 기준 중복 체크
6564 do {
66- questionTargetId = random .nextInt (nodeDtoList .size ());
67- } while (usedNodeIndices .contains (questionTargetId ));
65+ int randomIndex = random .nextInt (nodeDtoList .size ());
66+ targetNode = nodeDtoList .get (randomIndex );
67+ targetId = String .valueOf (targetNode .getId ());
68+ } while (usedNodeIds .contains (targetId ));
6869
69- NodeDto targetNode = nodeDtoList .get (questionTargetId );
70- usedNodeIndices .add (questionTargetId ); // 사용한 Id 추가
70+ usedNodeIds .add (targetId ); // 사용된 ID 등록
7171
72- // 정답
7372 String answer = targetNode .getLabel ();
7473
75- // 정답 포함 5개 보기 생성
7674 Set <String > options = new HashSet <>();
77- options .add (answer ); // 정답 보기 추가
75+ options .add (answer );
7876
79- while (options .size () < 5 ) { // 랜덤 보기 추가
77+ while (options .size () < 5 ) {
8078 int randomIndex = random .nextInt (nodeDtoList .size ());
8179 String option = nodeDtoList .get (randomIndex ).getLabel ();
8280 options .add (option );
8381 }
8482
85- // 보기 리스트 랜덤 배치
8683 List <String > shuffledOptions = new ArrayList <>(options );
8784 Collections .shuffle (shuffledOptions );
8885
89- // 문제 하나 생성
9086 ConnectQuizDto .ConnectQuiz quiz = ConnectQuizDto .ConnectQuiz .builder ()
91- .questionTargetId (String . valueOf ( questionTargetId ))
87+ .questionTargetId (targetId ) // ID는 이제 문자열
9288 .shuffledOptions (shuffledOptions )
9389 .answer (answer )
9490 .build ();
9591
96- // 문제 리스트에 추가
9792 quizList .add (quiz );
9893 }
9994}
0 commit comments