체육복

seheeee_97·2023년 12월 19일

회고팀

목록 보기
32/41




import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

class Solution {
    public int solution(int n, int[] lost, int[] reserve) {
        int answer = n - lost.length; // 여벌도 없고 잃어버리지도 않은 학생

        Arrays.sort(reserve);
        Arrays.sort(lost);

        // 여분이 있지만 도난당하지 않은 학생 리스트
        List<Integer> reserveList = new ArrayList<>();
        for (int r : reserve) {
            reserveList.add(r);
        }

        // 여분이 있지만 도난당한 학생 먼저 처리
        List<Integer> lostList = new ArrayList<>();
        for (int l : lost) {
            lostList.add(l);
        }

        for (int l : lost) {
            if (reserveList.contains(l)) {
                reserveList.remove(Integer.valueOf(l));
                answer++;
                lostList.remove(Integer.valueOf(l));
            }
        }

        // 남은 도난당하지 않은 학생들에 대해 여분이 있는지 확인하고 처리
        for (int l : lostList) {
            if (!reserveList.contains(l)) {
                if (reserveList.contains(l - 1)) {
                    reserveList.remove(Integer.valueOf(l - 1));
                    answer++;
                } else if (reserveList.contains(l + 1)) {
                    reserveList.remove(Integer.valueOf(l + 1));
                    answer++;
                }
            }
        }

        return answer;
    }
}






5, 7, 12, 24번 테스트 실패

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

class Solution {
    public int solution(int n, int[] lost, int[] reserve) {
        int answer = n - lost.length; // 여벌도 없고 잃어버리지도 않은 학생

        Arrays.sort(reserve);
        Arrays.sort(lost);

        // 여분이 있지만 도난당하지 않은 학생 리스트
        List<Integer> reserveList = new ArrayList<>();
        for (int r : reserve) {
            reserveList.add(r);
        }

        // 여분이 있지만 도난당한 학생 먼저 처리
        for (int l : lost) {
            if (reserveList.contains(l)) {
                reserveList.remove(Integer.valueOf(l));
                answer++;
            }
        }

        // 남은 도난당하지 않은 학생들에 대해 여분이 있는지 확인하고 처리
        for (int l : lost) {
            if (!reserveList.contains(l)) {
                if (reserveList.contains(l - 1)) {
                    reserveList.remove(Integer.valueOf(l - 1));
                    answer++;
                } else if (reserveList.contains(l + 1)) {
                    reserveList.remove(Integer.valueOf(l + 1));
                    answer++;
                }
            }
        }

        return answer;
    }
}





런타임 에러

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

class Solution {
    public int solution(int n, int[] lost, int[] reserve) {
        int answer = n - lost.length; // 여벌도 없고 잃어버리지도 않은 학생
        
        Arrays.sort(reserve);
        Arrays.sort(lost);
        
        // 박싱(boxing)을 통해 Integer 객체 배열로 변환
        Integer[] lost_sort = Arrays.stream(lost).boxed().toArray(Integer[]::new);
        Integer[] reserve_sort = Arrays.stream(reserve).boxed().toArray(Integer[]::new);

        // Arrays.asList()를 사용하여 Integer 객체 배열을 ArrayList로 변환
        List<Integer> reserve_list = new ArrayList<>(Arrays.asList(reserve_sort));
        List<Integer> lost_list = new ArrayList<>(Arrays.asList(reserve_sort));
        
        //여분이 있지만 도난당해서 하나만 있는 학생 제외
        for (int i = 0; i < len; i++) {
            // lost[i]-1 또는 +1의 값이 reserve2 리스트에 있으면 리스트에서 삭제
            if (reserve_list.contains(lost_sort[i])) {
                reserve_list.remove(Integer.valueOf(lost_sort[i]));
                lost_list.remove(Integer.valueOf(lost_sort[i]));
            }
        }
        
        for (int i = 0; i < lost_list.size; i++) {
            // lost[i]-1 또는 +1의 값이 reserve2 리스트에 있으면 리스트에서 삭제
            if (reserve_list.contains(lost_list.get(i) - 1)) {
                reserve_list.remove(Integer.valueOf(lost_list.get(i) - 1)); // 박싱된 값으로 삭제
                answer++;
            } else if (reserve_list.contains(lost_list.get(i) + 1)) {
                reserve_list.remove(Integer.valueOf(lost_list.get(i) + 1)); // 박싱된 값으로 삭제
                answer++;
            }
        }

        return answer;
    }
}






여분이 있지만 도난당해서 하나만 있는 학생 제외

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

class Solution {
    public int solution(int n, int[] lost, int[] reserve) {
        int len = lost.length;
        int answer = n - len; // 여벌도 없고 잃어버리지도 않은 학생
        
        Arrays.sort(reserve);
        Arrays.sort(lost);
        
        // 박싱(boxing)을 통해 Integer 객체 배열로 변환
        Integer[] lost_sort = Arrays.stream(lost).boxed().toArray(Integer[]::new);
        Integer[] reserve_sort = Arrays.stream(reserve).boxed().toArray(Integer[]::new);

        // Arrays.asList()를 사용하여 Integer 객체 배열을 ArrayList로 변환
        List<Integer> reserve_list = new ArrayList<>(Arrays.asList(reserve_sort));
        
        //여분이 있지만 도난당해서 하나만 있는 학생 제외
        for (int i = 0; i < len; i++) {
            // lost[i]-1 또는 +1의 값이 reserve2 리스트에 있으면 리스트에서 삭제
            if (reserve_list.contains(lost_sort[i])) {
                reserve_list.remove(Integer.valueOf(lost_sort[i]));
            }
        }
        
        for (int i = 0; i < len; i++) {
            // lost[i]-1 또는 +1의 값이 reserve2 리스트에 있으면 리스트에서 삭제
            if (reserve_list.contains(lost_sort[i] - 1)) {
                reserve_list.remove(Integer.valueOf(lost_sort[i] - 1)); // 박싱된 값으로 삭제
                answer++;
            } else if (reserve_list.contains(lost_sort[i] + 1)) {
                reserve_list.remove(Integer.valueOf(lost_sort[i] + 1)); // 박싱된 값으로 삭제
                answer++;
            }
        }

        return answer;
    }
}






제일 처음 작성한 코드

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

class Solution {
    public int solution(int n, int[] lost, int[] reserve) {
        int len = lost.length;
        int answer = n - len; // 여벌도 없고 잃어버리지도 않은 학생
        
        Arrays.sort(reserve);
        Arrays.sort(lost);
        
        // 박싱(boxing)을 통해 Integer 객체 배열로 변환
        Integer[] lost_sort = Arrays.stream(lost).boxed().toArray(Integer[]::new);
        Integer[] reserve_sort = Arrays.stream(reserve).boxed().toArray(Integer[]::new);

        // Arrays.asList()를 사용하여 Integer 객체 배열을 ArrayList로 변환
        List<Integer> reserve_list = new ArrayList<>(Arrays.asList(reserve_sort));

        for (int i = 0; i < len; i++) {
            // lost[i]의 값이 reserve2 리스트에 있으면 리스트에서 삭제
            if (reserve_list.contains(lost_sort[i] - 1)) {
                reserve_list.remove(Integer.valueOf(lost_sort[i] - 1)); // 박싱된 값으로 삭제
                answer++;
            } else if (reserve_list.contains(lost_sort[i] + 1)) {
                reserve_list.remove(Integer.valueOf(lost_sort[i] + 1)); // 박싱된 값으로 삭제
                answer++;
            }
        }

        return answer;
    }
}





https://school.programmers.co.kr/learn/courses/30/lessons/42862

0개의 댓글