import java.util.*;
class Solution {
public int solution(int n, int[] lost, int[] reserve) {
int answer = 0;
Arrays.sort(lost);
Arrays.sort(reserve);
ArrayList<Integer> l = new ArrayList<>();
ArrayList<Integer> r = new ArrayList<>();
for(int i=0;i<reserve.length;i++){
r.add(reserve[i]);
}
for(int i=0;i<lost.length;i++){
l.add(lost[i]);
}
for(int i=0;i<l.size();i++){
for(int j=0;j<r.size();j++){
if(l.get(i) == r.get(j)){
l.remove(i);
r.remove(j);
i--;
j--;
break;
}
}
}
int num = 0;
for(int i=0;i<l.size();i++){
for(int j=0;j<r.size();j++){
if(r.get(j)-1 == l.get(i) || r.get(j) == l.get(i) || r.get(j)+1 == l.get(i)) {
r.remove(j);
l.remove(i);
i--;
j--;
break;
}
}
}
answer = n - l.size();
return answer;
}
}
효율성이 좋지 않은 것 같아서 다시 풀 예정.
+추가
class Solution {
public int solution(int n, int[] lost, int[] reserve) {
int answer = n;
int student[] = new int[n+2];
for(int i=0;i<lost.length;i++){
student[lost[i]]--;
}
for(int i=0;i<reserve.length;i++){
student[reserve[i]]++;
}
for(int i=1;i<=n;i++){
if(student[i-1] == 1 && student[i] == -1){
student[i] = 0;
student[i-1] = 0;
} else if(student[i+1] == 1 && student[i] == -1){
student[i] = 0;
student[i+1] = 0;
}
}
for(int i=1;i<=n;i++){
if(student[i] < 0) answer--;
}
return answer;
}
}
student[i] 기준, student[i-1] 을 먼저 비교 해야함.
'코딩테스트 연습 > programmers' 카테고리의 다른 글
| [프로그래머스] 코딩테스트 연습 > 연습 > 문제시저 암호 (0) | 2025.10.03 |
|---|---|
| [programmers] 2021 카카오 채용연계형 인턴십 > 거리두기 확인하기 (0) | 2025.10.02 |
| [프로그래머스] 해시 - 위장 (0) | 2022.12.30 |
| [프로그래머스] 해시 - 전화번호 목록 (0) | 2022.12.30 |
| [Programmers] 스택/큐 > 주식 가격 (0) | 2022.04.01 |