https://school.programmers.co.kr/learn/courses/30/lessons/42576
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
참여자 중에 한 명만 완주를 못하고 다른 사람들은 완주를 한다.
이중에 완주하지 못한 한사람의 이름을 출력해야한다.
'js 배열 비교'검색했더니
JSON.stringify를 통해 문자열로 변경해 준 뒤 비교하는 방법을 찾았다.
[Javascript] 두 배열의 대한 비교 방법
[Javascript] 두 배열의 대한 비교 방법 실무에서나 알고리즘의 대한 공부를 할 때 두 배열의 대한 비교나 교집합(Intersection), 차집합(Difference)은 정말 많이 사용되는 것 같다. 특히 알고리즘을 풀
soft91.tistory.com
여기서 필요한건 차집합
// 배열 선언
const arr1 = ['1','2','3','4','5'];
const arr2 = ['1','2'];
// 차집합(Difference)
console.log(arr1.filter(x => !arr2.includes(x)));
출처: https://soft91.tistory.com/84 [너와 나의 프로그래밍:티스토리]
.
var participant = ['leo', 'kiki', 'eden'];
var completion = ['eden', 'kiki']
console.log(participant.filter(x => !completion.includes(x)));
//['leo']
원하는 값이 잘나왔다. 근데 console.log를 return으로 바꿔서 프로그래머스에 넣으면 안된다
다른방식도 찾아봤다
다른분들 답안을 참조하여 .sort() 이용하여 같은 순서로 배열하고 비교해서 다른값을 찾는방식을 찾았다.
var s_par = participant.sort();
var s_com = completion.sort();
// console.log(s_par, s_com) //배열이 같나 확인+
for (let i = 0; i < s_par.length + 1; i++) {
if (s_par[i] == !s_com[i]) {
console.log(s_par[i]);
}
}
콘솔에 true만 엄청나게 찍힌다????
ㄴ프로그래머스 답안용으로 수정 하고
틀린 ==! 를 !==로 변경
변수 answer로 인해 이중으로 ' "leo" ' 들어가고 굳이 필요없어서 삭제
//완성
function solution(participant, completion) {
var s_par = participant.sort();
var s_com = completion.sort();
for (let i = 0; i < s_par.length + 1; i++) {
if (s_par[i] !== s_com[i]) {
return(s_par[i]);
}
}
}
* 정리노트
.sort() : 기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따라 정렬하여 재배열
==는 '값'만 비교하고, ===는 '타입'까지 비교합니다.
!== / !=== 도 마찬가지
'코딩테스트' 카테고리의 다른 글
TIL - 프로그래머스 코딩테스트 : 문자열을 정수로 바꾸기 (0) | 2022.08.07 |
---|---|
TIL - 프로그래머스 연습문제 : 두 정수 사이의 합 (0) | 2022.08.07 |
프로그래머스 연습문제 : 내적 (0) | 2022.08.07 |
TIL - 프로그래머스 연습문제 : 행렬의 덧셈 (0) | 2022.08.05 |
TIL - 프로그래머스 연습문제 : 가운데 글자 가져오기 (0) | 2022.08.05 |