<문제>
<접근 방식>
1) 주어지는 수가 0~100 범위이기 때문에 두수의 합의 범위는 0~200 이므로 메모리 사용이 크지 않아 접근이 빠른 배열을 사용.
2) cases에 두수의 합과 동일한 인덱스에 1을 대입한다.
3) cases 배열을 순회해서 해당 인덱스의 값이 1이라면 두수의 합이 해당 인덱스인 경우가 존재하는 것이므로 answer에 추가한다. (0번 인덱스 부터 추가하기 때문에 따로 정렬을 하지 않아도 된다.)
<코드>
class Solution {
public int[] solution(int[] numbers) {
int size = 0;
int[] cases = new int[200];
for(int j = 0; j < numbers.length - 1; j++){
for(int i = j + 1; i < numbers.length; i++){
int index = numbers[j] + numbers[i];
if(cases[index] != 1){
cases[index] = 1;
size++;
}
}
}
int[] answer = new int[size];
int i = 0;
for(int index = 0; index < 200; ++index){
if(cases[index] == 1){
answer[i++] = index;
}
}
return answer;
}
}
반응형
'코딩 테스트 > 알고리즘(Java)' 카테고리의 다른 글
[프로그래머스/Lv.2] 프로세스 (1) | 2025.02.13 |
---|---|
[프로그래머스/Lv.2] 더 맵게 (1) | 2025.02.04 |
[프로그래머스/Lv.2] 카펫 (0) | 2025.02.04 |
[프로그래머스/Lv.1] 가장 가까운 같은 글자 (0) | 2025.01.24 |
[프로그래머스/Lv.1] 시저 암호 (0) | 2025.01.23 |