인프런 워밍업 클럽 백엔드 - 다섯 번째 과제
9개월 전
최대한 클린하지 않게 작성된 아래 코드는 다음과 같이 동작합니다.
주어지는 숫자를 하나 받는다.
해당 숫자만큼 주사위를 던져, 각 숫자가 몇 번 나왔는지 알려준다.
[제시된 코드]
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]);
}
}
}
[참고]
댓글을 작성해보세요.