diff --git a/src/main/java/com/going/server/domain/graph/repository/GraphNodeRepository.java b/src/main/java/com/going/server/domain/graph/repository/GraphNodeRepository.java index 3b95975..d93ad69 100644 --- a/src/main/java/com/going/server/domain/graph/repository/GraphNodeRepository.java +++ b/src/main/java/com/going/server/domain/graph/repository/GraphNodeRepository.java @@ -25,6 +25,4 @@ OR toLower(n.label) CONTAINS toLower($keyword) RETURN n """) List findByKeyword(String keyword); - - } diff --git a/src/main/java/com/going/server/domain/quiz/generate/ConnectQuizGenerator.java b/src/main/java/com/going/server/domain/quiz/generate/ConnectQuizGenerator.java index 24536be..f0f6831 100644 --- a/src/main/java/com/going/server/domain/quiz/generate/ConnectQuizGenerator.java +++ b/src/main/java/com/going/server/domain/quiz/generate/ConnectQuizGenerator.java @@ -38,7 +38,7 @@ public ConnectQuizDto generate(Graph graph) { // 최종 문제 리스트 List quizList = new ArrayList<>(); // 이미 사용한 노드 Id 기록용 (중복 방지) - Set usedNodeIds = new HashSet<>(); + Set usedNodeIds = new HashSet<>(); // 문제 3개 만들기 for (int i = 0; i < 3; i++) { @@ -53,47 +53,42 @@ public ConnectQuizDto generate(Graph graph) { } // connect 퀴즈 문제 생성 - private static void createConnectQuiz(Random random, List nodeDtoList, List quizList, Set usedNodeIndices) { - if(usedNodeIndices.size() >= nodeDtoList.size()) { - // 모든 노드를 다 사용했으면 추가 생성 불가 - return; - } + private static void createConnectQuiz(Random random, List nodeDtoList, + List quizList, Set usedNodeIds) { + if (usedNodeIds.size() >= nodeDtoList.size()) return; - int questionTargetId; + NodeDto targetNode; + String targetId; - // nodeDtoList 중 1개의 id로 랜덤 선택 (중복 방지) + // node의 ID(String) 기준 중복 체크 do { - questionTargetId = random.nextInt(nodeDtoList.size()); - } while (usedNodeIndices.contains(questionTargetId)); + int randomIndex = random.nextInt(nodeDtoList.size()); + targetNode = nodeDtoList.get(randomIndex); + targetId = String.valueOf(targetNode.getId()); + } while (usedNodeIds.contains(targetId)); - NodeDto targetNode = nodeDtoList.get(questionTargetId); - usedNodeIndices.add(questionTargetId); // 사용한 Id 추가 + usedNodeIds.add(targetId); // 사용된 ID 등록 - // 정답 String answer = targetNode.getLabel(); - // 정답 포함 5개 보기 생성 Set options = new HashSet<>(); - options.add(answer); // 정답 보기 추가 + options.add(answer); - while (options.size() < 5) { // 랜덤 보기 추가 + while (options.size() < 5) { int randomIndex = random.nextInt(nodeDtoList.size()); String option = nodeDtoList.get(randomIndex).getLabel(); options.add(option); } - // 보기 리스트 랜덤 배치 List shuffledOptions = new ArrayList<>(options); Collections.shuffle(shuffledOptions); - // 문제 하나 생성 ConnectQuizDto.ConnectQuiz quiz = ConnectQuizDto.ConnectQuiz.builder() - .questionTargetId(String.valueOf(questionTargetId)) + .questionTargetId(targetId) // ID는 이제 문자열 .shuffledOptions(shuffledOptions) .answer(answer) .build(); - // 문제 리스트에 추가 quizList.add(quiz); } }