문제 출처 - Programmers
문제는 여기
[풀이]
1. 잃어버린 사람 배열과 여분의 옷이 있는 사람 배열을 정렬해준다.
2. 여분의 옷이 있는 사람이 옷을 잃어버린 사람이 될 수 있으니 이 경우를 찾아 처리해준다.
3. 여분의 옷의 사람과 잃어버린 사람이 1 차이 이하로 나는 경우만 빌릴 수 있으므로 이 경우 처리를 해준다.
4. 결과를 출력한다.
[접근]
1. 배열을 순차적으로 탐색하면서 자신보다 1 작거나 1 큰 값이 있으면 처리해주면 되겠다고 생각하였다.
2. 배열이 정렬되어있다는 내용이 없어 Arrays.sort를 사용해 정렬해줬다.
3. 여분의 옷이 있는 사람이 옷을 잃어버린 경우가 있을 수 있으니 이를 먼저 처리해줬다.
[코드]
import java.util.*;
class Solution {
public int solution(int n, int[] lost, int[] reserve) {
int 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]) {
answer++; // 자신의 옷을 입으면 되니까 참여자 수 증가
lost[i] = -1;
reserve[j] = -1;
break;
}
}
}
// 체육복 빌려주는 경우
for (int i = 0; i < lost.length; i++) {
for (int j = 0; j < reserve.length; j++) {
// 잃어버린 사람꺼보다 1 작거나 1 큰거 가능하니까
if ((lost[i] - 1 == reserve[j]) || (lost[i] + 1 == reserve[j])) {
answer++;
reserve[j] = -1;
break;
}
}
}
return answer;
}
}
'문제 풀이 > Programmers' 카테고리의 다른 글
[프로그래머스] 조이스틱 (JAVA) (0) | 2022.03.29 |
---|---|
[프로그래머스] 두 정수 사이의 합 (JAVA) (0) | 2022.03.28 |
[프로그래머스] 모의고사 (JAVA) (0) | 2022.03.25 |
[프로그래머스] 짝지어 제거하기 (JAVA) (0) | 2022.03.23 |
[프로그래머스] 기능개발 (JAVA) (0) | 2022.03.22 |