-
[javascript] 프로그래머스 무작위로 K개의 수 뽑기STUDY/Code TEST 2023. 7. 27.
[unrated] 무작위로 K개의 수 뽑기 - 181858
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
성능 요약
메모리: 38.8 MB, 시간: 39.47 ms
구분
코딩테스트 연습 > 코딩 기초 트레이닝
채점결과
Empty
문제 설명
랜덤으로 서로 다른 k개의 수를 저장한 배열을 만드려고 합니다. 적절한 방법이 떠오르지 않기 때문에 일정한 범위 내에서 무작위로 수를 뽑은 후, 지금까지 나온적이 없는 수이면 배열 맨 뒤에 추가하는 방식으로 만들기로 합니다.
이미 어떤 수가 무작위로 주어질지 알고 있다고 가정하고, 실제 만들어질 길이
k
의 배열을 예상해봅시다.정수 배열
arr
가 주어집니다. 문제에서의 무작위의 수는arr
에 저장된 순서대로 주어질 예정이라고 했을 때, 완성될 배열을 return 하는 solution 함수를 완성해 주세요.단, 완성될 배열의 길이가
k
보다 작으면 나머지 값을 전부 -1로 채워서 return 합니다.
제한사항
- 1 ≤
arr
의 길이 ≤ 100,000- 0 ≤
arr
의 원소 ≤ 100,000
- 0 ≤
- 1 ≤
k
≤ 1,000
입출력 예
arr k result [0, 1, 1, 2, 2, 3] 3 [0, 1, 2] [0, 1, 1, 1, 1] 4 [0, 1, -1, -1]
입출력 예 설명
입출력 예 #1
- 앞에서부터 서로 다른
k
개의 수를 골라내면 [0, 1, 2]가 됩니다. 따라서 [0, 1, 2]를 return 합니다.
입출력 예 #2
- 서로 다른 수의 개수가 2개 뿐이므로 서로 다른 수들을 앞에서부터 차례대로 저장한 [0, 1]에서 이후 2개의 인덱스를 -1로 채워넣은 [0, 1, -1, -1]을 return 합니다.
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
코딩테스트 연습 | 프로그래머스 스쿨
개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!
school.programmers.co.kr
코드
function solution(arr, k) { let result = [arr[0]] for(let i=1; i<arr.length; i++){ if(compare(arr[i], result) && result.length < k){ result.push(arr[i]) } } while(result.length < k){ result.push(-1) } return result } function compare (arr, result){ for(a of result){ if(a === arr) return false } return true }
코드 설명
처음에는 sort 메소드를 이용하여 정렬한 뒤 result 배열 가장 끝 인덱스 값과 비교하여 없으면 넣는 식으로 해서
코드를 실행했는데 전부 다 틀려서 당황했다..;
문제를 다시 읽어보니 arr배열 해당 index 값이 result 배열에 들어있는 값이 아니라면 result 배열에 추가하는 것이었다.
다시 짠 풀이과정은 이렇다!
1. result 빈 배열 선언
2. arr 배열의 index를 0부터 끝까지 확인하여 result 배열에 있는지 없는지 확인
2-1. 있다면 넘어감
2-2. 없다면 push() 메소드로 해당 값 추가
3. 위의 작업을 끝낸 뒤 result의 길이가 k보다 작다면 나머지를 -1로 채움
2번 과정의 코드는 result 배열 안에 있는 값 전부를 확인해야하기 때문에
찾고싶은 값과 배열을 쓰는 compare 함수를 만들어서 사용했다. 해당 값이 result 배열에 없다면 true 값을 리턴한다.
3번 과정의 코드는 2번까지의 과정이 다 끝난 뒤 while 함수를 통해 result의 길이가 k보다 작은지, 작다면, 길이가 k가 될 때까지
-1을 push() 해주게 만들었다.'STUDY > Code TEST' 카테고리의 다른 글
[Javascript] 프로그래머스 주사위의 개수 (0) 2023.08.22 프로그래머스 최빈값 구하기 (0) 2023.07.14 프로그래머스 같은 숫자는 싫어 - 미완 (0) 2023.07.04 프로그래머스 최댓값 만들기 (2) (0) 2023.07.01 프로그래머스 가운데 글자 가져오기 (0) 2023.06.29 - 1 ≤