프로그래머스

프로그래머스 무작위로 K개의 수 뽑기

chojdsj 2023. 11. 13. 01:30
728x90

 

 

 

 

 

 

먼저 이 문제에서는 중복된 수를 제거해야한다.

 

int형 배열을 따로 하나 더 만들고 거기에 arr배열의 중복된 수가 제거된 원소들을 새로 만든 배열에 담아준다.

 

오늘 배운것인데 중복된 수를 제거해주는 아주 간단한 방법이 있다.

 

 

kArr이라는 배열을 따로 만들다.

 

그리고 Arrays.stream(arr) 메서드를 이용해서 arr배열을 스트림으로 변환한다.

 

distinct() 메서드는 arr배열의 원소들 중 중복된 수만 제거해서 스트림으로 반환한다.

 

따라서 Arrays.stream(arr).distinct() 메서드는 arr의 중복된 요소를 제거하는 스트림을 반환하고,

 

마지막으로 toArray() 메서드로 스트림의 요소를 배열로 반환 후 kArr배열에 담아준다.

 

 

 

 

 

length 변수에 중복된 수가 제거된 배열의 길이를 담아주고,

 

반환할 answer 배열에 kArr의 요소들을 넣어준다.

 

그러나 length의 길이( kArr.length, 중복 제거된 배열) 가 answer.length ( k ) 의 길이보다 작다면 부족한 수 공간 만큼 -1을 넣어줘야 하기 때문에

 

for문 안에서 반복될 동안 length의 길이를 --로 1씩 빼주고 0이 된다면, 즉 kArr의 원소들은 answer의 배열에 

 

다 넣어줬지만 for문은 answer[]의 길이만큼 돌기 때문에 ( kArr.length < answer.length ) 남은 answer[] 공간에 -1을 넣어준다.