당근먹는하니
귀엽고 행복해
당근먹는하니
전체 방문자
오늘
어제
  • 분류 전체보기 (274)
    • 다람쥐🐿 (26)
    • C++ 공부빵야 (7)
    • 공부👻 (5)
    • 프론트엔드✏️ (228)
      • 코드캠프 (120)
      • 팀 프로젝트✨ (31)
      • 개인공부 (67)
    • 프론트엔드 - 바닐라js (7)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • React-hook-form
  • 자바스크립트
  • 알고리즘
  • 팀 프로젝트
  • 회고
  • 프로그래머스
  • next.js
  • emotion
  • CSS
  • graphql
  • javascript
  • 배열
  • refreshtoken
  • 프론트엔드
  • react
  • 부트캠프
  • 팀플
  • 공통 컴포넌트
  • 코드캠프
  • 팀프로젝트
  • ssg
  • 배포
  • javascrpit
  • typescript
  • algorithm
  • JS
  • HTML
  • 리액트
  • 코딩
  • 코딩 부트캠프

최근 댓글

최근 글

티스토리

250x250
반응형
hELLO · Designed By 정상우.
당근먹는하니

귀엽고 행복해

알고리즘 - 객체, 맵(map)
프론트엔드✏️/코드캠프

알고리즘 - 객체, 맵(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
반응형
저작자표시 비영리 동일조건 (새창열림)

'프론트엔드✏️ > 코드캠프' 카테고리의 다른 글

220613 프론트엔드 부트캠프 34일차:  (0) 2022.06.14
react custom hook  (0) 2022.06.13
리액트 커링(React Currying)  (0) 2022.06.12
220612 프론트엔드 부트캠프 33일차: 주말  (0) 2022.06.12
220611 firebase, react hook form  (0) 2022.06.12
    '프론트엔드✏️/코드캠프' 카테고리의 다른 글
    • 220613 프론트엔드 부트캠프 34일차:
    • react custom hook
    • 리액트 커링(React Currying)
    • 220612 프론트엔드 부트캠프 33일차: 주말
    당근먹는하니
    당근먹는하니

    티스토리툴바