사이트 : 프로그래머스
푼 날짜 : 2022-06-23
난이도 : LV1
제목 : 체육복
public class 체육복 {
public int solution(int n, int[] lost, int[] reserve) {
int answer = 0;
HashMap<Integer,Integer> result = new HashMap<>();
for (int i = 0; i < n+2; i++) {
result.put(i,1);
}
for (int i : lost) {
result.put(i,result.get(i)-1);
}
for (int i : reserve) {
result.put(i,result.get(i)+1);
}
for (int i = 1; i < n+1; i++) {
if(result.get(i)>=2){
if(result.get(i-1)==0){
result.put(i,result.get(i)-1);
result.put(i-1,result.get(i-1)+1);
}
else if(result.get(i+1)==0){
result.put(i,result.get(i)-1);
result.put(i+1,result.get(i+1)+1);
}
}
}
for (int i = 1; i < n+1; i++) {
if(result.get(i)>=1){
answer++;
}
}
return answer;
}
만약 원소 앞뒤를 찾아야할때 첫번째랑 마지막에 분기처리하지말고 그냥 2칸 더 늘려서 만들자