728x90
728x90
= 메서드 + for 구문(5)
<문제> (난이도 상) (혼자 못 푼다!! ㅜ_ㅜ)
정수를 매개변수로 받아서, 1~매개변수 까지의 값을 배열에 랜덤하게
넣어서 반환해주는 함수 seat을 생성하세요.
- 조건
1. 숫자는 중복되지 않습니다.
2. swap을 이용하지 않습니다.
- 입력 5
출력 - [1~5가 랜덤하게 섞여있는 길이가 5인 배열]
- 입력10
출력 - [1~10가 랜덤하게 섞여있는 길이가 10인 배열]
+) swap으로는 중복되지않게 하기 어렵다.
배열에 값을 집어 넣기 전에, 그 앞자리까지 5가 있는지 확인해보면된다.
바깥에서나오는 반복문은 몇 번 중복인지는 회전수가 계속 달라질 것이다.
while문을 사용해서 바깥, 안쪽은 집어넣기전 인덱스까지 하나씩 찾아보면 된다.
<정답>
seat(10);을 출력했을 때, 배열의 크기가 10인 배열 안에 1~10까지 랜덤하게 섞여있다면 정답.
<해설>
(method)
static int[] seat(int size) {//매개변수 size로 하자!
int[]arr=new int[size];//사이즈만한 크기의 arr이 필요하다.
int index = 0;
start:while(true) { //돌아갈때마다, 랜덤한 값이 들어가는게 필요하다.
int ran = (int)(Math.random()*size)+1;//이부분이 이해가 잘안간다.
//중복검사 부분
for(int i = 0;i<index;i++ ) {
if(arr[i]==ran) {
continue start;
}
}
arr[index]=ran;
index++; //이렇게 까지만 하면, 중복값이 나온다. //중복검사로 가기
if(index==size) break;//탈출
}
return arr;
}
(in main)
int[] arr = seat(10);
System.out.println(Arrays.toString(arr));
728x90
'수업 복습하기 > Java Quiz' 카테고리의 다른 글
Quiz 19 - 스캐너 + for 구문 + if (0) | 2021.08.26 |
---|---|
Quiz 18 - 스캐너 + for 구문 + if (0) | 2021.08.26 |
Method Quiz 02 - 메서드 + for 구문 (5) (0) | 2021.08.26 |
Method Quiz 02 - 메서드 + for 구문 (4) (0) | 2021.08.25 |
Method Quiz 02 - 메소드 + for 구문 (3) (0) | 2021.08.25 |