✅ 문제

중복이 없이 숫자를 뽑는 로또 프로그램을 만드시오
✅ 코드
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random r = new Random();
int a = 0;
int[] lotto = new int[6];
for (int i = 0; i < lotto.length; i++) {
lotto[i] = r.nextInt(45) + 1;
for (int j = 0; j < i; j++) {
if (lotto[i] == lotto[j]) {
i--;
break;
}
}
}
for (int i = 0; i < lotto.length; i++) {
System.out.println("행운의 숫자 : " + lotto[i] + " ");
}
}
}
✅ 추론 과정
자바에서 난수(랜덤수) 만드는 객체 Random
random 객체를 사용할 때는 반드시 import 해 주어야 한다.
Random 랜덤변수명 = new Random();
변수명 = 랜덤변수명.nextInt(범위수)+시작숫자;
여기서 중요한 부분은 중복이 없이 숫자를 뽑아야 하기 때문에 번호를 뽑고 나서 숫자를 배열에 넣어주고, for문을 돌리며 새로 뽑은 숫자를 기존의 숫자와 하나씩 비교해 준다. (배열 인덱스 0번부터 차례로 비교)
이 때, 만약 숫자가 동일하다면 반복한 횟수를 -1하여 다시 한번 더 반복문이 돌아가도록 해 준다.
아래는 내가 쌩초보였을 때 풀었던 긴 코드이다;; ㅋㅋㅋㅋ
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random rd = new Random();
int[] nums = new int[6];
for (int i = 0; i < 6; i++) {
int t = rd.nextInt(6) + 1;
boolean found = false;
for (int j = 0; j < i; j++) {
if (nums[j] == t) {
found = true;
break;
}
}
if (found) {
i--;
continue;
}
nums[i] = t;
System.out.println("행운의 숫자 : " + t);
}
}
}
'코딩테스트 > JavaFestival(스마트인재개발원)' 카테고리의 다른 글
[자바페스티벌] 20번 - 10진수 정수를 입력받아 2진수로 변환해서 출력하기 (0) | 2024.03.26 |
---|---|
[자바페스티벌] 19번 - 단 수와 곱해지길 원하는 수 입력받아 구구단 출력하기 (0) | 2024.03.26 |
[자바페스티벌] 17번 - 숫자를 입력받아 3의 배수인 숫자 출력하기 (1) | 2024.03.25 |
[자바페스티벌] 16번 - 8자리 정수 입력받아 정수의 합 구하기 (반복문 활용) (1) | 2024.03.25 |
[자바페스티벌] 15번 - 1, 2, 4, 7, 11 과 같은 수열의 n번째 항까지 출력하기 (0) | 2024.03.25 |
✅ 문제

중복이 없이 숫자를 뽑는 로또 프로그램을 만드시오
✅ 코드
import java.util.Random; public class Main { public static void main(String[] args) { Random r = new Random(); int a = 0; int[] lotto = new int[6]; for (int i = 0; i < lotto.length; i++) { lotto[i] = r.nextInt(45) + 1; for (int j = 0; j < i; j++) { if (lotto[i] == lotto[j]) { i--; break; } } } for (int i = 0; i < lotto.length; i++) { System.out.println("행운의 숫자 : " + lotto[i] + " "); } } }
✅ 추론 과정
자바에서 난수(랜덤수) 만드는 객체 Random
random 객체를 사용할 때는 반드시 import 해 주어야 한다.
Random 랜덤변수명 = new Random();
변수명 = 랜덤변수명.nextInt(범위수)+시작숫자;
여기서 중요한 부분은 중복이 없이 숫자를 뽑아야 하기 때문에 번호를 뽑고 나서 숫자를 배열에 넣어주고, for문을 돌리며 새로 뽑은 숫자를 기존의 숫자와 하나씩 비교해 준다. (배열 인덱스 0번부터 차례로 비교)
이 때, 만약 숫자가 동일하다면 반복한 횟수를 -1하여 다시 한번 더 반복문이 돌아가도록 해 준다.
아래는 내가 쌩초보였을 때 풀었던 긴 코드이다;; ㅋㅋㅋㅋ
import java.util.Random; public class Main { public static void main(String[] args) { Random rd = new Random(); int[] nums = new int[6]; for (int i = 0; i < 6; i++) { int t = rd.nextInt(6) + 1; boolean found = false; for (int j = 0; j < i; j++) { if (nums[j] == t) { found = true; break; } } if (found) { i--; continue; } nums[i] = t; System.out.println("행운의 숫자 : " + t); } } }
'코딩테스트 > JavaFestival(스마트인재개발원)' 카테고리의 다른 글
[자바페스티벌] 20번 - 10진수 정수를 입력받아 2진수로 변환해서 출력하기 (0) | 2024.03.26 |
---|---|
[자바페스티벌] 19번 - 단 수와 곱해지길 원하는 수 입력받아 구구단 출력하기 (0) | 2024.03.26 |
[자바페스티벌] 17번 - 숫자를 입력받아 3의 배수인 숫자 출력하기 (1) | 2024.03.25 |
[자바페스티벌] 16번 - 8자리 정수 입력받아 정수의 합 구하기 (반복문 활용) (1) | 2024.03.25 |
[자바페스티벌] 15번 - 1, 2, 4, 7, 11 과 같은 수열의 n번째 항까지 출력하기 (0) | 2024.03.25 |