3주차 목요일 알고리즘
function solution(num){
let answer=[]
let result=[]
for (let i = num.length-1; i>=0; i--){ answer.push(num.filter((el)=>el!==num[i]).map((el)=>el+num[i]))
}
console.log(answer)
}
let num=[2,1,3,4,1]
solution(num)
멘토님 답!
function solution(num){
let answer=[]
for (let i = 0; i<num.length; i++){
for(let l=i+1; l<num.length;l++){
const sum=num[i]+num[l]
if(answer.includes(sum)===false)
answer.push(sum)
}
}return answer.sort((a,b)=>a-b)
}
new Set
1)고유한 데이터만 받아올 수 있다.(중복되지 않는 데이터만!)
2) 겉은 배열 형태이지만 타입은 객체형태를 가진다.
new
1) 뒤에 들어오는 데이터를 새로운 객체형태로 리턴
확인할 때 타입오브로 하면 배열이던 객체던 둘다 오브젝트라고 반환하니까
Array.isArray(arr) 함수를 사용햐서 배열인지 확인해 보면된다.
new Set()
셋에서 사용하는 메서드(배열에사용되는것이랑 다른것입!)
데이터 추가
const arr=new Set()
arr.add(1)
데이터 확인
const arr=new Set()
arr.has(1)===>가지고 있으면 true
데이터 삭제
const arr=new Set()
arr.delete(1) ====>삭제됬으면 true
데이터 초기화
const arr=new Set()
arr.clear()
데이터 반복
arr.forEach(el=>{console.log(el)}
셋=>배열로 변환하는 방법
1)어레이쩜 프롬
const result=Array from(arr)
2)spread연산자
const answer=[...arr]
new Set()으로 풀었을 때
function solution(num){
let answer=new Set()
for (let i = 0; i<num.length; i++){
for(let l=i+1; l<num.length;l++){
const sum=num[i]+num[l]
answer.add(sum)
}
}return [...answer].sort((a,b)=>a-b)
}
스프레드 연산자
전개구분 연산자
const arr2=[1,2,3]
const arr3=[...arr2]
스프레드 연산자를 사용하면 얕은복사가 된당
arr2의 값이 나중되서 바뀌어도 arr3은 안바뀜
메서드 사용했을떙
function solution(num){
const answer =new Set()
num.forEach((el,i)=>{
num.slice(i+1).forEach(num2=>{
const sum=el+num2
answer.add(sum)
})
})
return [...answer].sort((a,b)=>a-b)
}
Author And Source
이 문제에 관하여(3주차 목요일 알고리즘), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@iamm71kr/3주차-목요일-알고리즘저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)