말하는 컴공감자의 텃밭

프로그래머스 체육복 - 자바(java) <8점> 1400점 달성 본문

알고리즘/Programmers - Java

프로그래머스 체육복 - 자바(java) <8점> 1400점 달성

현콩 2023. 6. 14. 10:06
728x90

프로그래머스 체육복
체육복복쓰

 

함정이 있던 문제라 초기 입출력은 금방 맞았는데 테스트 케이스 5, 12, 24 등이 걸려서 20분은 잡아먹은거 같다.

문제을 읽으면 학생 수가 주어지고 체육복을 잃어버린 사람 배열과, 여분이 있는 사람의 배열이 주어진다.

체육복은 사이즈 이슈로 본인 또는 앞뒤 체격에게만 빌려줄 수 있고, 최대한 많은 인원이 체육수업을 할 수 있게 여분의 체육복을 나눠주어야 한다.

또한 여분이 있는 사람도 도둑 맞을 수 있는데, 이 경우 본인은 여분의 체육복을 입기 때문에 빌려주지 않는다. << 이 부분을 처리 못해줘서 오래걸렸다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.util.*;
class Solution {
    public int solution(int n, int[] lost, int[] reserve) {
        int answer = 0;
        answer = n - lost.length;
        Arrays.sort(lost); // 배열 정렬. 체격에 따라 입을 수 있기 때문에
        Arrays.sort(reserve);
        
        for(int i = 0; i < lost.length; i ++){
            for(int j = 0; j < reserve.length; j++){
                  if(lost[i] - reserve[j] == 0 ){  // 먼저 여분이 있는데 도둑이 든 경우.
                    reserve[j] = -99// 여분 배열 처리.
                    lost[i] = -999;   // 잃어버린 사람 배열 처리
                    answer ++;        // 자신의 여분을 입었으므로 
                    break;
                }
            }
        }
        
        for(int i = 0; i < lost.length; i ++){
            for(int j = 0; j < reserve.length; j++){
                if(Math.abs(lost[i] - reserve[j]) == 1 ){ // 앞뒤 체격인 경우.
                    reserve[j] = -99;                     // 여분 옷 처리
                    answer ++;
                    break;
                }   
            }
        }
 
        return answer;
    }
}
cs

 

 

야ㅑㅑ호

이제 1400점이네오.

하루 한두개만 푸니까 진도가 안나가는 느낌.. 179문제중입니다.

728x90
Comments