문제: https://school.programmers.co.kr/learn/courses/30/lessons/42862
import java.util.*;
class Solution {
public int solution(int n, int[] lost, int[] reserve) {
int answer = 0;
boolean[] lostList = new boolean[n+1];
boolean[] reserveList = new boolean[n+1];
Arrays.fill(lostList, true);
Arrays.fill(reserveList, false);
// 참가 못하는 학생 체크
for(int x: lost){
lostList[x] = false;
}
// 빌려줄 수 있는 학생 체크
for(int y : reserve){
reserveList[y] = true;
}
// 참가 X == 빌려줄 수 있을 경우 -> 참가 & 빌려줄수 없다
for(int i= 1; i <= n; i++){
if(lostList[i] == false && reserveList[i] == true){
lostList[i] = true;
reserveList[i] = false;
}
}
// 본인보다 크고 작은 경우 체크
for(int i = 1; i <= n; i++){
if(!lostList[i]){
// 왼
if( i - 1 >= 1 && reserveList[i-1]){
reserveList[i-1] = false;
lostList[i] = true;
}else if(i + 1 <=n && reserveList[i+1]){
// 우
reserveList[i+1] = false;
lostList[i] = true;
}
}
}
// 답변 작성
for(int i = 1; i <= n; i++){
if(lostList[i]) answer++;
}
return answer;
}
}
문제를 제발제발제발 잘읽자..