https://programmers.co.kr/learn/courses/30/lessons/42862
import java.util.*;
class Solution {
public static void main(String[] args) {
tester(5,new int[] {2,4}, new int[] {1,3,5}, 5);
tester(5,new int[] {2,4}, new int[] {3}, 4);
tester(3,new int[] {3}, new int[] {1}, 2);
return;
}
public static void tester(int n, int[] lost, int[] reserve, int answer) {
int ret = solution(n,lost,reserve);
if(ret == answer) {
System.out.println("OK!!");
}
else {
System.out.printf("No.. ans:%d , your return is:%d\n",answer,ret);
}
return;
}
public static int solution(int n, int[] lost, int[] reserve) {
int answer = 0;
int[] clo = new int[n+1];
//-1 : 분실
//0 : 정상
//1 : 여분 가져옴
for(int i=0 ; i<lost.length ; i++) {
clo[lost[i]]--;
}
for(int i=0 ; i<reserve.length ; i++) {
clo[reserve[i]]++;
}
//0 번 인덱스
if(clo[1] == -1 ) {
if(clo[2] == 1) {
clo[1] = 0;
clo[2] = 0;
}
}
//맨처음과 마지막 인덱스 제외는 포문으로 돌리기
for(int i=2 ; i<=n-1 ; i++) {
if(clo[i] == -1) {
if(clo[i - 1] == 1) {
clo[i - 1] = 0;
clo[i] = 0;
}
else if(clo[i + 1] == 1) {
clo[i + 1] = 0;
clo[i] = 0;
}
}
}
//마지막 인덱스
if(clo[n] == -1 ) {
if(clo[n-1] == 1) {
clo[n-1] = 0;
clo[n] = 0;
}
}
int NG = 0;
for(int i=0 ; i<=n ; i++) {
if(clo[i] == -1) {
NG++;
}
}
return n-NG;
}
}