반응형
[처음 푼 풀이]
function solution(numbers) {
for(let i = 0; i < 100; i++){
const randomNum1 = numbers[i];
const randomNum2 = numbers[i];
let newNum = [];
newNum += (randomNum1 + randomNum2);
const arrNum = newNum.split();
const result = arrNum.sort();
return result;
}
}
1. 여기서 랜덤한 수를 뽑기 위해서 randomNum을 1, 2 나눠서 변수로 담았음
2. 생각해보니 무작위로 뽑은 수를 모두 numbers[i]로 설정하면 같은 위치에 있는 것이 뽑힐 수도 있기 때문에 잘못되었음
3. 그래서 for 문을 2번 돌리고 변수를 i 와 j 를 사용해서 다르게 넣어줬지만 또 실패..
4. 생각해보니 이 때도 동일한 수가 들어갈 수 있다는 것을 생각하지 못했음..
+[리더님의 풀이 조언]
1. 같은 i 를 사용하기 때문에 randomNum1 과 randomNum2 는 항상 같은 값일 것
2. for문에서 return 해버리면 for문이 딱 1번 실행되고 solution 함수가 종료되기 때문에 올바르지 않음! (주의)
[두번째 풀이]
function solution(numbers) {
const newNum = [];
for (let i = 0; i < numbers.length; i++) {
for (let j = i + 1; j < numbers.length; j++) {
newNum.push(numbers[i] + numbers[j]);
}
}
const arrNum = [...new Set(newNum)];
let result = arrNum.sort((a, b) => a - b);
return result;
}
1. 구글링을 했더니 new Set()으로 동일한 수를 없애고 배열로 만들어주는 함수 발견!
2. 오름차순 배열 정리하려면 sort((a, b) => a - b); 를 넣어줘야 한다는 것 알아냄
3. 오름차순/내림차순 배열을 다시 한 번 정리해야 할 듯
4. for문에서 바깥은 i = 0 이고 안쪽이 j = i + 1 인 이유는 동일위치의 값을 뽑아내지 않기 위함
+[숫자로 이루어진 배열을 오름차순, 내림차순 정렬]
arr.sort((a, b) => a - b); // 오름차순
arr.sort((a, b) => b - a); // 내림차순
[리더님의 풀이]
function solution(numbers) {
const newNums = []; // 배열이니까 Nums가 좋을 것 같습니다 ㅎㅎ
for (let i = 0; i < numbers.length; i++) {
for (let j = i + 1; j < numbers.length; j++) {
newNums.push(numbers[i] + numbers[j]);
}
}
const deduplicatedArr = [...new Set(newNums)];
// 중복 제거를 의미하는 deduplication 단어 사용
const result = deduplicatedArr.sort((a, b) => a - b);
// 재할당을 하지 않기때문에 const로 선언이 좋을 것 같습니다 ㅎㅎ
return result;
}
1. 배열이니까 newNum → newNums 변수명 변경
2. 중복제거를 의미하는 deduplication 단어 사용해 변수명 변경 (arrNum → deduplicatedArr)
3. 재할당을 하지 않을 때 변수에 let 말고 const 로 선언할 것 (중요)
또, result 없이 바로 리턴해도 됨
return arrNum.sort((a, b) => a - b);
'코딩 테스트 > Programmers - 1' 카테고리의 다른 글
[JS] 문자열 내림차순으로 배치하기 (0) | 2022.08.28 |
---|---|
[JS] 문자열 정수로 만들기 (0) | 2022.08.28 |
[JS] 문자열 내 마음대로 정렬하기 (0) | 2022.08.28 |
[JS] 나머지가 1이 되는 수 찾기 (1) | 2022.08.23 |
[JS] 수박수박수박수박수박수? (0) | 2022.08.22 |