알고리즘
[Programmars] 두 개 뽑아서 더하기 (JavaScript)
프린벼르
2022. 1. 31. 23:16

1. 나의 생각 흐름
처음에는 단순하게 "뽑는다"는 단어를 보고 Math.floor(Math.random())함수를 사용해야하는 건가? 라는 생각을 먼저 하게 됬다. 하지만 계속 고민해보니, 배열에 있는 수를 2개씩 뽑아 더하는 것이니까 이중 for문을 사용해야겠다는 생각이 들었다.
2. 내가 쓴 코드
function solution(numbers) {
let answer = [];
//numbers[0]과 numbers[1], numbers[0]과 numbers[2] ... 이렇게 반복해서 하려면
//이중 for문을 사용하기!!
for(let i=0; i < numbers.length -1; i++){
for(let j=i+1; j < numbers.length; j++){
let a = numbers[i];
let b = numbers[j];
let sum = a + b;
answer.push(sum);
// set : 자바스크립트에서 중복되는 데이터를 제거
const set = new Set(answer);
const perfectAnswer = Array.from(set);
answer = perfectAnswer;
}
}
return answer.sort(function (a,b){return a-b;});
}
< 배열에서 중복 제거하는 Set함수 >
set은 유니크한 값만 저장할 수 있도록 하기 때문에 array에 넣게 되면, 중복되는 값이 사라진다.
상당히 유용하기 때문에 반드시 기억해둘 필요가 있다!!
//set1이라는 변수에 Set 객체에 매개값을 중복된 배열 arr을 넣어준 후 출력해 보면 중복된 값들을 제거되고 //저장된 것을 확인할 수 있고, 이제 마지막으로 다시 새로운 배열에 담아주면 끝!!! const arr = ['W', 'W', 'o', 'o', 'r', 'l', 'd']; const set1 = new Set(arr) //Array.from() 를 사용하여 배열 형식으로 변환해주면 중복 값이 제거된 배열 데이터 형식으로 정리된다. const arr = ['W', 'W', 'o', 'o', 'r', 'l', 'd']; const set1 = new Set(arr); const arr2 = Array.from(set1);
const array = ['0', 1, 2, '0', '0', 3]; Array.from(new Set(array)); // ['0', 1, 2, 3]
//코드 한줄 정리 const arr = ['W', 'W', 'o', 'o', 'r', 'l', 'd']; const set1 = new Set(arr); const arr2 = Array.from(set1); console.log(arr) // [ 'W', 'W', 'o', 'o', 'r', 'l', 'd' ]; console.log(set1) // Set { 'W', 'o', 'r', 'l', 'd' }; console.log(arr2) // [ 'W', 'o', 'r', 'l', 'd' ]; //한줄로 코드 정리 const arr3 = Array.from(new Set(arr)); console.log(arr3) // [ 'W', 'o', 'r', 'l', 'd' ];
1. 문자 정렬 : arr.sort()
2. 숫자 오름차순 정렬 : arr.sort( function(a,b){return a-b})
3. 숫자 내림차순 정렬 : arr.sort( function(a,b){return b-a})
3. 결론
숫자 오름차순 정렬이 정말 많이 쓰는 문법이라는 것을 느꼈다. 좀 더 익숙해지도록 많이 코드를 쳐봐야 할 것 같다. 또한 새로 배운 set함수도 익숙해질 수 있도록 자주 써봐야겠다.