인프런 워밍업 클럽 백엔드 - 다섯 번째 과제

인프런 워밍업 클럽 백엔드 - 다섯 번째 과제

최대한 클린하지 않게 작성된 아래 코드는 다음과 같이 동작합니다.

  • 주어지는 숫자를 하나 받는다.

  • 해당 숫자만큼 주사위를 던져, 각 숫자가 몇 번 나왔는지 알려준다.

[제시된 코드]

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        System.out.println("숫자를 입력하세요: ");
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();

        int r1 = 0, r2 = 0, r3 = 0, r4 = 0, r5 = 0, r6 = 0;

        for (int i = 0; i < a; i++) {
            double b = Math.random() * 6;
            if (b >= 0 && b < 1) {
                r1++;
            } else if (b >= 1 && b < 2) {
                r2++;
            } else if (b >= 2 && b < 3) {
                r3++;
            } else if (b >= 3 && b < 4) {
                r4++;
            } else if (b >= 4 && b < 5) {
                r5++;
            } else if (b >= 5 && b < 6) {
                r6++;
            }
        }

        System.out.printf("1은 %d번 나왔습니다.\n", r1);
        System.out.printf("2은 %d번 나왔습니다.\n", r2);
        System.out.printf("3은 %d번 나왔습니다.\n", r3);
        System.out.printf("4은 %d번 나왔습니다.\n", r4);
        System.out.printf("5은 %d번 나왔습니다.\n", r5);
        System.out.printf("6은 %d번 나왔습니다.\n", r6);
    }
}

한 걸음 더!

현재 코드는 주사위가 1~6까지만 있다는 가정으로 작성되어 있습니다.
따라서 주사위가 1~12까지 있거나 1~20까지 있다면 코드를 많이 수정해야 하죠!

주사위의 숫자 범위가 달라지더라도 코드를 적게 수정할 수 있도록 고민해 봅시다!

[수정 코드]

import java.util.Scanner;

public class Main {

    private static Scanner scanner = new Scanner(System.in);
    private static int[] num = new int[20];

    public static void main(String[] args) {
        int roll = inputNumber();

        rollTheDice(roll);

        print();
    }

    public static int inputNumber() {
        System.out.print("숫자를 입력하세요: ");
        return scanner.nextInt();
    }

    public static void rollTheDice(int roll) {
        for (int i = 0; i < roll; i++) {
            int diceNumber = (int)(Math.random() * num.length);
            num[diceNumber]++;
        }
    }

    public static void print() {
        for (int i = 0; i < num.length; i++) {
            System.out.printf("%d은 %d번 나왔습니다.\n", (i + 1), num[i]);
        }
    }
}

 

[참고]

https://www.samsungsds.com/kr/insights/cleancode-0823.html

댓글을 작성해보세요.

채널톡 아이콘