function solution(lottos, win_nums) {
var answer = [];
// 제일 많이 맞춘 경우를 담을 변수 생성
let highest = 0;
// 제일 많이 맞추지 못할 경우를 담을 변수 생성
let lowest = 0;
// 당첨 번호가 lottos에 들어가 있을 경우 h,l 둘다 1씩 키운다.
lottos.forEach((num) => {
if (win_nums.includes(num)){
highest += 1;
lowest += 1;
return
}
// 알아볼 수 없는 번호가 나올 경우 h만 1씩 키워준다.
if (num === 0){
return highest += 1;
}
})
// 순위 구하기.
// 일치하는 번호가 2개 밑일 경우 6등 / 그 외는 7에서 맞춘 수만큼 빼서 순위를 구한다.
highest = highest < 2 ? 6 : 7 - highest
lowest = lowest < 2 ? 6 : 7 - lowest
// 구한 순위를 배열에 넣어준다.
answer = [highest,lowest]
return answer;
}
function solution(nums) {
// 가질 수 있는 폰켓몬의 최대값을 담은 변수를 생성합니다.
let ponketmonCount = nums.length / 2
// 가질 폰켓몬을 담은 배열을 생성합니다.
const myPonketmon = []
nums.forEach((ponketmon) => {
// 가지고 있는 폰켓몬일 경우 넘김.
if(!myPonketmon.includes(ponketmon)){
// 가질 수 있는 폰켓몬의 수를 넘길 경우 현재 가진 폰켓몬의 수를 반환합니다.
if (ponketmonCount === 0){return myPonketmon.length}
// 가지고 있지 않은 폰켓몬일 경우 가짐.
myPonketmon.push(ponketmon)
// 폰켓몬을 챙긴 뒤 카운트를 줄인다.
ponketmonCount -= 1
}
})
// 가질 수 있는 폰켓몬 수보다 중복된 개체가 많을 경우에는 배열을 다 돈 후 현재 가진
// 폰켓몬의 수를 반환합니다.
return myPonketmon.length
}
function solution(record) {
// id와 닉네임을 담고 있는 객체 생성
const idCon = {};
// 상태(state)에 따른 메세지와 id를 담은 배열
const arr = [];
// 배열 고차 함수를 이용해서 한 문장씩
record.forEach((cur) => {
// 공백을 기준으로 배열을 나누어 변수에 담아준다.
// state, id, name에 각각 담긴다.
const [state, id, name] = cur.split(' ');
// Enter, Leave의 상태일 때만 메세지를 출력함.
if (state !== 'Change') {
arr.push({
id,
text: state === 'Enter' ? '님이 들어왔습니다.' : '님이 나갔습니다.'
});
}
// Leave의 경우 이름을 표시하지 않음.
// 새로 들어오는 경우와 채팅방 내에서 이름 수정이 있을 경우 id에 맞춰서
// 닉네임을 갱신시켜준다.
if (name) {
idCon[id] = name;
}
});
// 배열에 담긴 메세지를 map을 이용해서 변경 후 출력해 줍니다.
return arr.map((item) => `${idCon[item.id]}${item.text}`)
}
-Set 메소드 .has(value)
- boolean 반환
// 교집합은 다음으로 흉내(simulate)낼 수 있음
var intersection = new Set([...set1].filter(x => set2.has(x)));
// 차집합은 다음으로 흉내낼 수 있음
var difference = new Set([...set1].filter(x => !set2.has(x)));
example.reduce(function(acc, current) {
if (acc.findIndex(({ id }) => id === current.id) === -1) {
acc.push(current);
}
return acc;
}, []);
initialValue를 제공하지 않으면, reduce()는 인덱스 1부터 시작해 콜백 함수를 실행하고 첫 번째 인덱스는 건너 뜁니다. initialValue를 제공하면 인덱스 0에서 시작합니다.
판별함수
const isLargeNumber = (element) => element > 13; console.log(isLargeNumber(14)) //true
(({ id }) => id === current.id) === -1) 이 부분은 이해가 잘 안간다.
csb
const k = nums.filter((a,i) => nums.indexOf(a) === i)