반응형
문제 제목 : 체육복
문제 유형 : Greedy
출제 플랫폼 : Programers
문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/42862#
PesudoCode and Exception
// pesudoCode
1) 리서버중에 로스트가 있으면 리서버에서 지우기
2) 전체 명수 n 중에 로스트.length 빼고 answer에 넣어놓기
3) lost el이 reserver +1 -1로 있으면 리서버 지우고(while 이용), answer -1씩 해주기
// exception
1) lost와 reserve를 정렬해서 사용한다 => 최대값을 얻기 위해
2) 앞에 번호에게 먼저 빌릴 수 있는지 확인한다 => 최대값을 얻기 위해
내가 푼 문제
function solution(n, lost, reserve) {
lost.sort((a, b) => a - b)
reserve.sort((a, b) => a - b)
let lostCopy = lost.slice(0)
let reserveCopy = reserve.slice(0)
reserve = reserve.filter(el => !lostCopy.includes(el))
lost = lost.filter(el => !reserveCopy.includes(el))
let answer = n - lost.length;
while(lost.length) {
let lostMan = lost.shift()
let frontIdx = reserve.indexOf(lostMan - 1)
let backIdx = reserve.indexOf(lostMan + 1)
if(frontIdx >= 0) {
reserve[frontIdx] = '_'
answer++
} else if(backIdx >= 0) {
reserve[backIdx] = '_'
answer++
} else continue;
}
return answer;
}
다른사람이 푼 문제
function solution(n, lost, reserve) {
return n - lost.filter(a => {
const b = reserve.find(r => Math.abs(r-a) <= 1)
if(!b) return true
reserve = reserve.filter(r => r !== b)
}).length
}반응형
'Algorithm' 카테고리의 다른 글
| [Python, 이분탐색] 백준 1072 게임 (1) | 2024.10.28 |
|---|---|
| Programsers JadenCase 문자열 만들기 - JavaScript (0) | 2022.10.14 |
| Programers 키패드 누르기 (2020 카카오 인턴십) - JavaScript (1) | 2022.09.23 |
| Programers 비밀지도 (2018 카카오 신입 공채 1차) - JavaScript (1) | 2022.09.23 |
| Programers 로또의 최고 순위와 최저 순위 - JavaScript (1) | 2022.09.22 |
