프론트엔드✏️/코드캠프
알고리즘 - 객체, 맵(map)
당근먹는하니
2022. 6. 13. 20:20
728x90
반응형
function solution(participant, completion) {
var answer = '';
console.log(participant.filter((el)=> !completion.includes(el)))
return String(participant.filter((el)=> !completion.includes(el)));
}
solution(["leo", "kiki", "eden"], ["eden", "kiki"]);
쉽다~했는데 아니였음
동명이인 ,,,
// 시간 초과 풀이(for, indexOf, splice)
function solution(participant, completion) {
for(let i = 0; i < completion.length; ++i) {
participant.splice(
participant.indexOf(completion[i]), 1)
// splice
// 1. 원하는 구간 삭제, 원하는 구간 데이터 추가
}
return participant[0];
}
// 배열 직접 수정하지 않고 데이터를 따로 추려냄
// key와 value 찾아서 정보 조회하는 것 : 해쉬
function solution(participant, completion) {
const answer = {};
// 1. 참가한 선수의 이름과 수를 정리
for(let i = 0; i < participant.length; i++) {
answer[participant[i]] === undefined
? answer [participant[i]] = 1
: answer[participant[i]]++;
console.log(answer);
}
// 2. 참가자 명단에서 완주한 사람의 이름을 제거
for(let i = 0; i < completion.length; i++) {
answer[completion[i]]--;
}
// 3. 완주하지 못한 선수 찾기
for(let key in answer) {
if(answer[key] !== 0) {
return key;
}
}
}
// 메서드 사용
function solution(participant, completion) {
participant.sort();
console.log(participant);
completion.sort();
// 문자열 기본 오름차순 정렬
return participant.filter( (name, i) => {
// console.log(name, completion[i]);
return name !== completion[i];
// 같은 줄에 있는 사람의 이름이 같지 않을 때
})[0]
// 가장 먼저 찾은 사람의 이름 return - 왜지?
}
solution(["mislav", "stanko", "mislav", "ana"], ["stanko", "ana", "mislav"] )
// 속도는 해시가 더 빨라요! (키와 밸류로 저장하고 있기 때문)
// Map
// 1. 객체와 비슷한 역할을 하는 자료 구조
// 2. 키와 밸류로 데이터를 고나리한다.
map = new Map();
map.set("name", "만두");
map.get("name"); // '만두'
map.forEach((value, key)=> {
console.log(value,key); // '만두', 'name'
})
// map.delete("name"); // 데이터 삭제
// map.clear(); // 데이터 치고화
const mapping = map.entries();
// mapping // {next: f next()}
mapping.next().value; // ['name','만두']
// 또 쓰면 다음꺼 가져옴
// 1. 객체의 크기를 바로 가져올 수 있다.
map.size // 1
// 2. key값에 어떠한 데이터 타입도 들어올 수 있다.
obj = {};
obj[1] = "문자열";
obj // { '1': '문자열'}
map.set(1, "숫자 타입");
map // 1 => '숫자 타입'
// 배열도 넣을 수 있다.
// 3. 객체의 순서를 보장받을 수 있다.
obj = {};
obj["1"] = 1;
obj["3"] = 3;
obj["2"] = 2;
obj // { '1': 1, '2': 2, '3': 3 } 키값 자동 정렬
// 맵은 자동 정렬 안 하고 넣어준 순서대로 저장된다.
배열의 주소를 참조해서 찾아옴.
728x90
반응형