리스트를 처음에 정렬해야 함
lost와 reserve 모두에 해당하는 학생 먼저 판단한 후에
나머지 학생들을 판단해야 한다.
나 같은 경우에는 빌려준 학생 처리를 -1로 하고 싶지 않아서
int[]에 있던 데이터를 ArrayList에 넣고
빌린 경우에 리스트에서 값을 remove로 제거하도록 코드를 구현했다.
but.. remove로 값을 제거하는 경우에 index도 함께 -1 update 해줘야 함..
(이 부분 놓쳐서 계속 부분점수 나왔다 ㅜㅜ)
https://school.programmers.co.kr/learn/courses/30/lessons/42862?language=java#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
import java.util.*;
class Solution {
public int solution(int n, int[] lost, int[] reserve) {
ArrayList<Integer> lostList = new ArrayList<>();
ArrayList<Integer> reserveList = new ArrayList<>();
for(int i=0;i<lost.length;i++){
lostList.add(lost[i]);
}
for(int i=0;i<reserve.length;i++){
reserveList.add(reserve[i]);
}
Collections.sort(lostList);
Collections.sort(reserveList);
int answer = n-lost.length;
for(int i=0;i<lostList.size();i++){
int lStudent = lostList.get(i);
for(int j=0;j<reserveList.size();j++){
int rStudent = reserveList.get(j);
if(lStudent == rStudent){
reserveList.remove(j);
lostList.remove(i);
answer++;
i--;
j--;
break;
}
}
}
for(int i=0;i<lostList.size();i++){
int lStudent = lostList.get(i);
for(int j=0;j<reserveList.size();j++){
int rStudent = reserveList.get(j);
if(lStudent-1 == rStudent || lStudent+1 ==rStudent){
reserveList.remove(j);
answer++;
j--;
break;
}
}
}
return answer;
}
}
'스터디 > Algorithm' 카테고리의 다른 글
[백준] 괄호 추가하기 16637 java - dfs (0) | 2024.10.10 |
---|---|
[백준] 여행 가자 1976 java - union find (4) | 2024.10.02 |
[프로그래머스스쿨] 그룹별 조건에 맞는 식당 목록 출력하기 oracle (1) | 2024.09.20 |
[프로그래머스스쿨] 입양 시각 구하기(2) oracle (1) | 2024.09.20 |
[프로그래머스스쿨] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 oracle (0) | 2024.09.20 |