이번 문제에서는 정확히 다섯 개의 중복 없는 난수를 담은 배열을 생성하는 JavaScript 함수를 작성해야 합니다. 조건은 다음과 같습니다.
- 모든 숫자는 0부터 9까지의 범위([0, 9]) 안에 있어야 합니다.
- 배열의 첫 번째 숫자는 0이 될 수 없습니다.
구현 코드
다음은 위 조건을 만족하는 함수의 예시 코드입니다.
const fiveRandoms = () => {
const arr = []
while (arr.length < 5) {
const random = Math.floor(Math.random() * 10);
if (arr.indexOf(random) > -1){
continue;
};
if(!arr.length && !random){
continue;
}
arr[arr.length] = random;
}
return arr;
};
console.log(fiveRandoms());코드 동작 원리
Math.floor(Math.random() * 10)을 사용하면 0부터 9 사이의 임의의 정수를 얻을 수 있습니다. while 루프를 통해 배열의 길이가 5가 될 때까지 반복하며, 각 단계에서 아래 두 가지 조건을 검사합니다.
- 중복 검사:
indexOf()로 해당 숫자가 이미 배열에 존재하는지 확인하고, 존재한다면continue로 건너뜁니다. - 첫 자리 검사: 배열이 아직 비어 있고(
!arr.length) 추출된 숫자가 0이라면(!random) 역시 건너뛰어 첫 번째 숫자가 0이 되지 않도록 합니다.
두 조건을 모두 통과한 숫자만 배열에 추가되기 때문에, 최종적으로는 조건을 만족하는 다섯 개의 고유한 난수 배열이 완성됩니다.
출력 결과
실행할 때마다 값은 달라지지만, 콘솔에는 다음과 같은 형태의 결과가 출력됩니다.
[ 9, 0, 8, 5, 4 ]