여러 코드를 작성하고 테스트를 진행했지만,
부분적인 성공만 있고 전체 테스트를 통과하지 못 했다.
그래서 프로그래머스의 "질문하기"란을 통해
테스트 케이스를 확인해봤다.
그 결과 체육복이 도둑질 당했지만,
여벌이 존재하는 학생이 존재할 수 있다는
사실을 알게 됐다.
그리고 해당 학생은 본인의 앞, 뒤 학생에게
여벌 옷이 있는지 확인을 하기 전
본인의 여벌 옷을 사용하는 식으로 코드를 작성해야 했다.
그래서, 먼저
let realLost = lost.filter((element)=> !reserve.includes(element)).sort((a,b)=> a- b)
도난 당한 학생일 때 filter 함수로 여벌 유무를 판단해
여벌이 없는 상황에서 도난 당한 학생 배열을 정렬한 형태로 저장했다.
let realReserve = reserve.filter((element)=> !lost.includes(element)).sort((a,b)=> a- b)
마찬가지로 여벌이 있지만 도난 당한 학생일 경우
여벌이 없다고 만들기 위해 위의 코드를 약간 수정해 사용했다.
let result = n - realLost.length
전체 학생 수 n에서 realLost.length를 빼면
수업에 참여 가능한 현재 인원을 변수에 담을 수 있다.
for(let value of realLost)
{
}
여벌이 없는 도난 당한 학생을 반복문을 통해 반복하면서
const front = realReserve.some((element)=> element === value - 1)
if(front)
{
result++;
realReserve.splice(realReserve.indexOf(value - 1),1);
continue;
}
const back = realReserve.some((element)=> element === value + 1)
if(back)
{
result++;
realReserve.splice(realReserve.indexOf(value + 1),1);
}
으로 압, 뒤 학생의 옷이 있으면 옷을 입고
realReserve에서 빌려준 친구를 지워
옷을 빌렸다는 사실을 알려줍니다.
그리고 result를 증가시켜 줍니다.
return result
제출한 코드 :
function solution(n, lost, reserve)
{
let realLost = lost.filter((element)=> !reserve.includes(element)).sort((a,b)=> a- b)
let realReserve = reserve.filter((element)=> !lost.includes(element)).sort((a,b)=> a- b)
let result = n - realLost.length
for(let value of realLost)
{
const front = realReserve.some((element)=> element === value - 1)
if(front)
{
result++;
realReserve.splice(realReserve.indexOf(value - 1),1);
continue;
}
const back = realReserve.some((element)=> element === value + 1)
if(back)
{
result++;
realReserve.splice(realReserve.indexOf(value + 1),1);
}
}
return result
}
'문제 풀기 > JavaScripts' 카테고리의 다른 글
문제 66. 대충 만든 자판 (난이도 7) (0) | 2024.08.30 |
---|---|
문제 65번. 문자열 나누기 (0) | 2024.08.29 |
문제 63. 숫자 짝꿍(난이도 7)(객체 사용 {}) (0) | 2024.08.26 |
62문제. 옹알이(2)(난이도 10) (0) | 2024.08.23 |
문제 61. 로또의 최고 순위와 최저 순위(난이도 5) (0) | 2024.08.20 |