‡๐Ÿ‘ฉ‍๐Ÿ’ป ‡/º Java

[Java] ์šฐ์•„ํ•œ ํ…Œํฌ์ฝ”์Šค | ๋กœ๋˜

Trudy | ์†ก์—ฐ 2023. 11. 29. 17:47

๋ฌธ์ œ 

 

 - ๊ธฐ๋Šฅ ์š”๊ตฌ ์‚ฌํ•ญ

(*์šฐ์•„ํ•œ ํ…Œํฌ์ฝ”์Šค ํ”„๋ฆฌ์ฝ”์Šค์˜ ๋ฌธ์ œ์—์„œ ์š”๊ตฌ์‚ฌํ•ญ๋“ค์„ ๋ช‡ ๊ฐœ ์ œ์™ธํ•˜์—ฌ ํ’€์—ˆ์Šต๋‹ˆ๋‹ค.)

 

๋กœ๋˜ ๊ฒŒ์ž„ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค. ๋กœ๋˜ ๊ฒŒ์ž„์€ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ทœ์น™์œผ๋กœ ์ง„ํ–‰๋œ๋‹ค.

- ๋กœ๋˜ ๋ฒˆํ˜ธ์˜ ์ˆซ์ž ๋ฒ”์œ„๋Š” 1~45๊นŒ์ง€์ด๋‹ค.
- 1๊ฐœ์˜ ๋กœ๋˜๋ฅผ ๋ฐœํ–‰ํ•  ๋•Œ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” 6๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋ฝ‘๋Š”๋‹ค.
- ๋‹น์ฒจ ๋ฒˆํ˜ธ ์ถ”์ฒจ ์‹œ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ์ˆซ์ž 6๊ฐœ์™€ ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ 1๊ฐœ๋ฅผ ๋ฝ‘๋Š”๋‹ค.
- ๋‹น์ฒจ์€ 1๋“ฑ๋ถ€ํ„ฐ 5๋“ฑ๊นŒ์ง€ ์žˆ๋‹ค. ๋‹น์ฒจ ๊ธฐ์ค€๊ณผ ๊ธˆ์•ก์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.
    - 1๋“ฑ: 6๊ฐœ ๋ฒˆํ˜ธ ์ผ์น˜ / 2,000,000,000์›
    - 2๋“ฑ: 5๊ฐœ ๋ฒˆํ˜ธ + ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ ์ผ์น˜ / 30,000,000์›
    - 3๋“ฑ: 5๊ฐœ ๋ฒˆํ˜ธ ์ผ์น˜ / 1,500,000์›
    - 4๋“ฑ: 4๊ฐœ ๋ฒˆํ˜ธ ์ผ์น˜ / 50,000์›
    - 5๋“ฑ: 3๊ฐœ ๋ฒˆํ˜ธ ์ผ์น˜ / 5,000์›
```

 

- ๋กœ๋˜ ๊ตฌ์ž… ๊ธˆ์•ก์„ ์ž…๋ ฅํ•˜๋ฉด ๊ตฌ์ž… ๊ธˆ์•ก์— ํ•ด๋‹นํ•˜๋Š” ๋งŒํผ ๋กœ๋˜๋ฅผ ๋ฐœํ–‰ํ•ด์•ผ ํ•œ๋‹ค.
- ๋กœ๋˜ 1์žฅ์˜ ๊ฐ€๊ฒฉ์€ 1,000์›์ด๋‹ค.
- ๋‹น์ฒจ ๋ฒˆํ˜ธ์™€ ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.
- ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ๋งคํ•œ ๋กœ๋˜ ๋ฒˆํ˜ธ์™€ ๋‹น์ฒจ ๋ฒˆํ˜ธ๋ฅผ ๋น„๊ตํ•˜์—ฌ ๋‹น์ฒจ ๋‚ด์—ญ ๋ฐ ์ˆ˜์ต๋ฅ ์„ ์ถœ๋ ฅํ•˜๊ณ  ๋กœ๋˜ ๊ฒŒ์ž„์„ ์ข…๋ฃŒํ•œ๋‹ค.

 ์‹คํ–‰ ๊ฒฐ๊ณผ ์˜ˆ์‹œ



```
๊ตฌ์ž…๊ธˆ์•ก์„ ์ž…๋ ฅํ•ด ์ฃผ์„ธ์š”.
8000

8๊ฐœ๋ฅผ ๊ตฌ๋งคํ–ˆ์Šต๋‹ˆ๋‹ค.
[8, 21, 23, 41, 42, 43] 
[3, 5, 11, 16, 32, 38] 
[7, 11, 16, 35, 36, 44] 
[1, 8, 11, 31, 41, 42] 
[13, 14, 16, 38, 42, 45] 
[7, 11, 30, 40, 42, 43] 
[2, 13, 22, 32, 38, 45] 
[1, 3, 5, 14, 22, 45]

๋‹น์ฒจ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด ์ฃผ์„ธ์š”.
1,2,3,4,5,6

๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด ์ฃผ์„ธ์š”.
7

๋‹น์ฒจ ํ†ต๊ณ„
---
3๊ฐœ ์ผ์น˜ (5,000์›) - 1๊ฐœ
4๊ฐœ ์ผ์น˜ (50,000์›) - 0๊ฐœ
5๊ฐœ ์ผ์น˜ (1,500,000์›) - 0๊ฐœ
5๊ฐœ ์ผ์น˜, ๋ณด๋„ˆ์Šค ๋ณผ ์ผ์น˜ (30,000,000์›) - 0๊ฐœ
6๊ฐœ ์ผ์น˜ (2,000,000,000์›) - 0๊ฐœ
์ด ์ˆ˜์ต๋ฅ ์€ 62.5%์ž…๋‹ˆ๋‹ค.


ํด๋ž˜์Šค ๊ตฌ์กฐ


์ฝ”๋“œ

Application.java

package lotto;

public class Application {
    public static void main(String[] args) {
        CalculateResult calculateResult = new CalculateResult();
        calculateResult.getUserInput();
        calculateResult.calculate();
        calculateResult.printResult();
    }
}

 

User.java

package lotto;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class User {
    public int getAmount() {
        return amount;
    }
    public List<Integer> getAnswer() {
        return answer;
    }

    public int amount;

    public List<Integer> answer = new ArrayList<>();


    void inputAmount(){
        System.out.println("๊ตฌ์ž…๊ธˆ์•ก์„ ์ž…๋ ฅํ•ด ์ฃผ์„ธ์š”.");

        Scanner sc = new Scanner(System.in);
        int inputAmount = sc.nextInt();
        inputAmount /= 1000;
        this.amount = inputAmount;
    }

    void inputAnswer(){
        System.out.println("๋‹น์ฒจ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด ์ฃผ์„ธ์š”.");

        Scanner sc = new Scanner(System.in);
        String[] str = sc.nextLine().split(",");
        System.out.println(str[0]);
//        for (int i = 0; i < 6; i++) {
//            answer.add(i, Integer.parseInt(str[i]));
//        }

        System.out.println("๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด ์ฃผ์„ธ์š”.");
        answer.add(sc.nextInt());
    }

    void printAnswer(){
        System.out.println(answer);
    }
}

 

LottoMachine.java

package lotto;

import camp.nextstep.edu.missionutils.Randoms;

import java.util.ArrayList;
import java.util.List;

public class LottoMachine {
    List<Integer> lottoNumber = new ArrayList<>();

    List<List<Integer>> lottoNumbers = new ArrayList<>();

    public List<Integer> getAnswer() {
        return answer;
    }

    List<Integer> answer = new ArrayList<>();

    public int amount;

    public List<List<Integer>> getLottoNumbers() {
        return lottoNumbers;
    }

    void getUser(){
        User user = new User();
        user.inputAmount();
        this.amount = user.getAmount();
        user.inputAnswer();
        user.printAnswer();
        this.answer = user.getAnswer();
    }
    void generateLotto(){
        for (int i = 0; i < amount; i++) {
            lottoNumber = Randoms.pickUniqueNumbersInRange(1, 10, 6);
            lottoNumbers.add(lottoNumber);
            System.out.println(lottoNumbers.get(i));
        }
    }
}

 

CalculateResult.java

package lotto;

import java.util.ArrayList;
import java.util.List;

public class CalculateResult {
    List<List<Integer>> lottoNumbers = new ArrayList<>();
    public List<Integer> answer = new ArrayList<>();

    //๊ฒฐ๊ณผ ๊ฐ’ ์ €์žฅ์„ ์œ„ํ•œ ๋ณ€์ˆ˜
    int[] result = {0,0,0,0,0};
    double rate;

    void getUserInput(){
        LottoMachine lottoMachine = new LottoMachine();
        lottoMachine.getUser();
        lottoMachine.generateLotto();
        this.lottoNumbers = lottoMachine.getLottoNumbers();
        System.out.println(" ============== ");
        this.answer = lottoMachine.getAnswer();
    }

    void calculate(){
        List<Integer> number = new ArrayList<>();
        int count;
        for(int i = 0; i < lottoNumbers.size(); i++) {
            number = lottoNumbers.get(i);
            count = 0;
            for(int j=0; j < number.size(); j++){
                //๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ ๊ณ„์‚ฐ
                if(j==6 && count==4) result[3]++;
                else if(answer.contains(number.get(j))) count++;
            }
            System.out.print(count);
            if(count == 3) result[0]++;
            else if(count == 4) result[1]++;
            else if(count == 5) result[2]++;
            else if(count == 6) result[4]++;
        }

        rate = 5000*result[0] + 50000*result[1] + 1500000*result[2] + 30000000*result[3] + 2000000000*result[4];
        rate /= lottoNumbers.size() * 1000 * 100;
    }

    void printResult(){
        System.out.println("\n๋‹น์ฒจ ํ†ต๊ณ„\n---");
        System.out.println("3๊ฐœ ์ผ์น˜ (5,000์›) - " + result[0] +"๊ฐœ");
        System.out.println("4๊ฐœ ์ผ์น˜ (50,000์›) - " + result[1] +"๊ฐœ");
        System.out.println("5๊ฐœ ์ผ์น˜ (1,500,000์›) - " + result[2]  +"๊ฐœ");
        System.out.println("5๊ฐœ ์ผ์น˜, ๋ณด๋„ˆ์Šค ๋ณผ ์ผ์น˜ (30,000,000์›) - " + result[3] +"๊ฐœ");
        System.out.println("6๊ฐœ ์ผ์น˜ (2,000,000,000์›) - " + result[4] +"๊ฐœ");
        System.out.printf("์ด ์ˆ˜์ต๋ฅ ์€" + "%.1f" +" %% ์ž…๋‹ˆ๋‹ค.", rate);

    }

}