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)
}

좋은 웹페이지 즐겨찾기