230405_Algorithm

majungha·2023년 4월 6일
1

알고리즘

목록 보기
17/71

오늘의 알고리즘 👍

📝 1. 완주하지 못한 선수


  • 수많은 마라톤 선수들이 마라톤에 참여하였습니다.
  • 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.
  • 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때,
  • 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.

▷ 입출력 예

solution(["leo", "kiki", "eden"], ["eden", "kiki"]) // "leo"
solution(["marina", "josipa", "nikola", "vinko", "filipa"], ["josipa", "filipa", "marina", "nikola"]) // "vinko"
solution(["mislav", "stanko", "mislav", "ana"], ["stanko", "ana", "mislav"]) // "mislav"

▷ 내 풀이

function solution(participant, completion) {
  participant.sort();
  completion.sort();
  for (let i = 0; i < participant.length; i++) {
    if (participant[i] !== completion[i]) {
      return participant[i];
    }
  }
}

❗ splice 매서드

  • 배열에서 사용 가능한 매서드
    • 1) 지정한 배열의 특정 구간에 존재하는 요소를 제거할 수 있다.
    • 2) 지정한 배열의 특정 구간에 요소를 추가할 수 있다.
    • 예)
	const arr = [1, 2, 3, 4]
	arr.splice(3, 4)

	const arr = [1, 2, 3, 4]
	arr.splice(1, 1) // (인덱스, 인덱스부터 제거할 값의 수) //제거한 데이터들이 담긴 배열을 반환 // [ 2 ]
	arr // [ 1, 3, 4 ]

	arr.splice(1, 0, 'a') // (인덱스, 인덱스부터 제거할 값의 수, 바꿀 수)
	arr // [1, 'a', 2, 3, 4]

▷ splice 매서드 사용 풀이 (효율성 검사 실패)

function solution(participant, completion) {
  for (let i = 0; i < completion.length; i++) {
    if (participant.includes(completion[i])) {
      participant.splice(participant.indexOf(completion[i]), 1);
    }
  }
  return participant;
}

▷ hash 사용 풀이

function solution(participant, completion) {
  // hash
  const answer = {};
  for (let i = 0; i < participant.length; i++) {
    !answer[participant[i]] ? (answer[participant[i]] = 1) : answer[participant[i]]++;
  }
  for (let i = 0; i < completion.length; i++) {
    answer[completion[i]]--;
  }
  for (let key in answer) {
    if (answer[key]) {
      return key;
    }
  }
}

▷ filter 매서드 사용 풀이

function solution(participant, completion) {
  participant.sort();
  completion.sort();
  const answer = participant.filter((name, i) => {
    return name !== completion[i];
  });
  return answer[0];
}

출처: 프로그래머스
출처: 코드캠프

profile
개발자 블로그 / 항상 겸손한 자세로 배우면서 성장하자 할 수 있다!

0개의 댓글