자바로 로또 프로그램을 만들어 보려고 하는데.... 중복된 배열값을 체크해서 파일로 출력하려고 합니다.

조회수 2103회

  ▼ 프로그램의 진행은 로또 번호를 몇 개 뽑아낼 것인지 묻습니다. 그러면 입력한 숫자 만큼 번호를 추출하게 됩니다. for 문을 이용해서 List 객체에 번호들을 모두 추가합니다. 추가후 Collections.shuffle() 함수의 인수로 넘기게 되면 자동으로 섞어줍니다. 그럼 리스트 안에는 섞은 값이 차례대로 추가 되어 있을 겁니다. 이것을 하나씩 꺼내면 되겠죠. 이렇게 꺼낸 값을 숫자의 숫서대로 정렬하기 위해 Array.sort() 함수를 이용했습니다.

그런데 이소스를 이렇게 수정해 보고 싶어졌습니다. 입력값으로 광장히 큰 값 예를 들어 200만개 그런다음 그중에 중복된 값들도 존재 할터인데 사용자가 그 중복된 번호 파일로 출력할 수 있도록 하고 싶습니다. 예를 들어 20회를 입력하면 추출된 번호들중 중복이 일어난 번호들중 20회 이하로 일어난 번호들을 파일로 출력해 주는 그런 프로그램으로 수정하고 싶은데 더이상 할 수가 없네요

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
 
public class Lotto {
 
    public static void main(String[] args) {
 
        Lotto lotto = new Lotto();
        Scanner sc = new Scanner(System.in);
 
        System.out.print("로또번호 추출 개수 입력: ");
        int gameCnt = sc.nextInt();
 
        for (int i = 1; i <= gameCnt; i++) {
            System.out.println(
                    i + "번째 로또번호: " + lotto.lottoNumbers());
        }
    }
 
    String lottoNumbers() {
 
        List<Integer> lottoNum = new ArrayList<Integer>();
         
        // List 안에 로또번호 추가
        for (int i = 1; i <= 45; i++) {
            lottoNum.add(i);
        }
 
        // set안의 수를 무작위로 섞는다
        Collections.shuffle(lottoNum);
 
        int[] lottoNums = new int[6];
        for (int i = 0; i < 6; i++) {
            lottoNums[i] = lottoNum.get(i);
        }
         
        // 정렬
        Arrays.sort(lottoNums);
 
        return Arrays.toString(lottoNums);
    }
}

 

  

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)