문제를 잘 안 읽어서 푸는데 오래 걸렸다.
학생 마다의 체형이 다르다는 것도 나중에 봐서 오래걸린 문제.
import java.util.*;
class Solution {
public int solution(int n, int[] lost, int[] reserve) {
Map<Integer, Integer> map = new HashMap<>();
for(int i = 1 ; i <= n; i++) map.put(i, 1);
for(int haveTwoStu : reserve) map.put(haveTwoStu, map.get(haveTwoStu) + 1);
for(int lostStu : lost) map.put(lostStu, map.get(lostStu) - 1);
int prev = 0;
int count = 0;
for(int key : map.keySet()){
if(map.get(key) > 0){
count++;
prev = map.get(key);
}
else{
if(prev > 1){
count++;
prev = 0;
continue;
}else if(map.get(key+1) != null && map.get(key + 1) > 1){
count++;
map.put(key + 1, 1);
prev = 0;
continue;
}
}
}
return count;
}
}
Map<Integer, Integer> map = new HashMap<>();
for(int i = 1 ; i <= n; i++) map.put(i, 1);
for(int haveTwoStu : reserve) map.put(haveTwoStu, map.get(haveTwoStu) + 1);
for(int lostStu : lost) map.put(lostStu, map.get(lostStu) - 1);
prev
1 보다 크다면 count를 증가시킨다.for(int key : map.keySet()){
if(map.get(key) > 0){
count++;
prev = map.get(key);
} else {
if(prev > 1) {
count++;
prev = 0;
continue;
} else if(map.get(key+1) != null && map.get(key + 1) > 1){
count++;
map.put(key + 1, 1);
prev = 0;
continue;
}
}
}
return count;