https://school.programmers.co.kr/learn/courses/30/lessons/42862#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
테스트케이스 13번
: 배열 sort를 해주어야 한다.
이유
n=5 lost=[4,2] reserve=[3,5] return : 5 출력 값 : 4 |
> 정렬하지 않으면 3번이 4번한테 빌려줘서 2번은 못받기 때문
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]){
reserve[j] = lost[i] = -1;
answer++;
break;
}
}
}
for(int i=0; i<lost.length; i++){
for(int j=0; j<reserve.length; j++){
if((lost[i]+1) == reserve[j] || (lost[i]-1) == reserve[j]){
reserve[j] = -1;
answer++;
break;
}
}
}
return answer;
}
}
(반복문이 많아서 리팩토링이 필요할 것 같다.)
for(int loster : lost){
for(int j=0; j<reserve.length; j++){
if(loster == reserve[j]+1 || loster == reserve[j]-1){
reserve[j] = -1;
answer++;
break;
}
}
}
무릎을 탁 친 다른 분들의 풀이
이중포문을 없애줄 수 있다.
잃어버린 사람 -1
잃어버렸지만 여분이 있는 사람 0
빌려줄 수 있는 사람 1
public int solution(int n, int[] lost, int[] reserve) {
int[] people = new int[n];
for (int l : lost)
people[l-1]--;
for (int r : reserve)
people[r-1]++;
}
'JAVA' 카테고리의 다른 글
[JAVA] 1259번 팰린드롬수 (0) | 2022.08.03 |
---|---|
[JAVA] 프로그래머스 Lv.2 가장 큰 수 (정렬) (0) | 2022.08.02 |
[JAVA] 2748번 피보나치 수2 (0) | 2022.07.31 |
[Java] 투포인터 (백트래킹보다 효율적, 백준 2003번) (0) | 2022.07.31 |
[Java] for-each문과 getBytes (0) | 2022.07.26 |