https://school.programmers.co.kr/learn/courses/30/lessons/42862
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1) 풀이
오랜만에 풀어보는 그리디 문제!
이상하게 BFS 이런 것보다도 그리디 같은 문제를 좀 어려워하는 편이라서
한줄 한줄 잘 읽어가면서 차분히 풀려고 노력했다
이 문제는 진짜 특히, 이상했는데.. 레벨 1이고 분명히 c++로 풀었었는데
하루종일 풀었는데도 도저히 못 풀어서.. 이거 때문에 밤을 꼴딱 새고 잤다..
(이거만 풀고 잘라고 했는데 실패함 😥)
오늘도 헤매기 싫고 할 것도 쌓여있어서 검색 한 번 해봤더니..
ㄹㅇ 어이없는 이유였다.. 한줄 적고 1분도 안 돼서 바로 해결..
다른 로직은 다 맞았던 거고 lost 배열을 정렬이 되어있지 않은 경우때문에 문제가 생기는 거였다
테스트케이스 13,14
lost 배열이 정렬이 안되어있을 경우를 생각
[프로그래머스] 체육복 (그리디) / javascript 이글에서 예시를 그대로 들고 와보았다
이 분도 체육복 문제 질문목록을 뒤져서 해당 이유를 찾아내셨다고 한다.. 고생하셨슴니다..😂
lost 배열이 정렬되어있지 않을때에 내가 짜놓은 로직이 작동 안 할 수 있다
이유가 뭘까? 예시를 들어보자
n=5 lost=[4,2] reserve=[3,5] 이면 바른 return 값은 5인데
정렬하지 않으면 순서대로 배열을 순회하게되어서 4번학생은 3번에게 빌려주게 되고,
2번학생은 결국 여분 체육복을 받지 못해서 체육수업에 참여할 수 없기 때문에 총 가능한 학생수가 4명이 된다.
정말.. 정말 허무하고.. 여러 경우를 다시 한 번 생각해보아야겠다고 다시금 깨닫게 된 문제..
그래도 늘 써보고자 했던 map 함수도 써본 문제라 하나 배웠다 생각하고 넘어간다
레벨 1은 좀 스무스하게 넘어가보자고.. 😂
2) 최종 소스코드
function solution(n, lost, reserve) {
let answer = 0;
reserve=reserve.map((value)=>
lost.includes(value)? //여분의 체육복을 가지고 있는데 분실된 경우는 lost 배열과 reserve에서 모두 제외
lost.splice(lost.indexOf(value),1):
value
);
lost.sort(); //정렬
for(let i=0;i<lost.length;i++){
if(reserve.includes(lost[i]-1)){
answer++; //answer 변수를 count 변수처럼 사용
reserve.splice(reserve.indexOf(lost[i]-1),1);
}else if(reserve.includes(lost[i]+1)){
answer++;
reserve.splice(reserve.indexOf(lost[i]+1),1);
}
}
answer=n-(lost.length-answer);
return answer;
}
3) 참고자료
[프로그래머스] 체육복 (그리디) / javascript
✅ 프로그래머스 체육복의 히든 테스트케이스 기록 🔖
velog.io
https://bbaktaeho-95.tistory.com/40
[Javascript/Array] find, findIndex, indexOf (배열 검색)
📚 find, findIndex, indexOf 자바스크립트 Array.prototype 배열에서 원하는 값 또는 식별자를 찾아내는 메서드 배열을 순차 반복 find 는 인자로 받은 판별 함수를 만족하는 첫 번째 요소를 반환 findIndex 는
bbaktaeho-95.tistory.com
'Problem Solving > 프로그래머스' 카테고리의 다른 글
[프로그래머스/JavaScript] 약수의 합 (0) | 2022.10.06 |
---|---|
[프로그래머스/JavaScript] 완주하지 못한 선수 (1) | 2022.10.05 |
[프로그래머스/JavaScript] 프린터 (0) | 2022.10.03 |
[프로그래머스/JavaScript] 기능개발 (1) | 2022.10.01 |
[프로그래머스/JavaScript] 나머지가 1이 되는 수 찾기 (0) | 2022.09.08 |