728x90
이해하기
처음에는 int 배열에 차례대로 저장하고, int 배열 값을 String으로 바꿔 String이 해당 값을 포함하고 있는지 확인하려 하였다.
하지만 Arrays.fill(answer, -1)을 해두면 String으로 변환 시 1이 걸리고, 그냥 int 배열은 기본이 0이라 0이 걸리는 문제가 생겼다.
계속 고민하다가 결국 풀이를 참고하였다.
사실 Set을 떠올리기는 했는데 여전히 String으로 변환하는 것에 꽂혀있는 상황이었어서 제대로 활용하지 못했다.
문제풀이
import java.util.*;
class Solution {
public int[] solution(int[] arr, int k) {
int[] answer = new int[k];
Set<Integer> set = new HashSet<>();
int count = 0;
for (int i = 0; i < arr.length; i++) {
if (!set.contains(arr[i])) {
set.add(arr[i]);
answer[count] = arr[i];
count++;
}
if (count == k) {
break;
}
}
for (int i = count; i < k; i++) {
answer[i] = -1;
}
return answer;
}
}
- set에 arr[i]가 없다면
- set.add(arr[i]) 해주고
- answer[count]에 arr[i]를 저장해준 후
- count++
- 만약 count가 k가 됐다면 break
- 전부 수행한 후 부족한만큼 -1을 채워넣어줘야 하므로 count부터 k - 1까지 answer[i]에 -1을 넣어줄 것
'JAVA > Coding Test Study' 카테고리의 다른 글
[프로그래머스] 코딩 기초 트레이닝 Lv.0 클리어! (0) | 2024.04.30 |
---|---|
[Lv.0] 프로그래머스 - 정수를 나선형으로 배치하기 : Java (0) | 2024.04.30 |
[Lv.0] 프로그래머스 - 세 개의 구분자 : Java (0) | 2024.04.30 |
[Lv.0] 프로그래머스 - 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기 : Java (0) | 2024.04.30 |
[Lv.1] 프로그래머스 - 시저 암호 : Java (0) | 2024.04.19 |