엄지월드

42862 체육복 본문

알고리즘

42862 체육복

킨글 2022. 9. 11. 16:32

 

헷갈렸던 점

- 정렬되지 않은 배열이라는 조건을 인지하지 못하고 풀고 있었다. 문제를 자세히 보자

- lostList를 운영하면서 중복으로 잃어버린자 == 가져온자를 계산하지 않고, 이외에 친구들도 매끄럽게 처리할 수 있었다. 

 

public static int solution(int n, int[] lost, int[] reserve) {
        Arrays.sort(lost);
        int answer = 0;
        int[] arr = new int[n+2];

		// 여분이 있는 친구들은 1로 표시
        for(int i=0; i<reserve.length; i++){
            arr[reserve[i]] = 1;
        }
        ArrayList<Integer> lostList = new ArrayList<>();
        
        // 본인이 잃어버렸는데, 본인이 체육복을 가져온 경우 0으로 처리
        // 그렇지 않은 경우 잃어버린 lostList로 추가 
        for (int i = 0; i < lost.length; i++) {
            int number = lost[i];
            if(arr[number] == 1){
                arr[number] = 0;
            }else{
                lostList.add(lost[i]);
            }
        }

        int cnt = 0;
        // 만약 앞뒤에 사이즈가 있으면 0으로 처리, 그렇지 않으면 cnt++
        for (int i = 0; i < lostList.size(); i++) {
            int number = arrayList.get(i);

            if(arr[number-1] == 1){
                arr[number-1] = 0;
            }else if(arr[number+1] == 1){
                arr[number+1] = 0;
            }else{
                cnt++;
            }
        }
        
        // 체육복이 없는 친구들을 n에서 빼줌
        System.out.println(n-cnt);
        answer = n-cnt;
        return answer;
    }

'알고리즘' 카테고리의 다른 글

PGM 118670 행렬과 연산  (0) 2022.09.13
PGM 118667 두 큐 합 같게 만들기  (0) 2022.09.13
72410 신규 아이디 추천  (0) 2022.09.09
68935 진법 뒤집기  (0) 2022.09.09
백준 1967 트리의 지름(DFS)  (0) 2022.09.06
Comments