728x90
풀이 힌트
- 변수 초기화:
- s와 e는 각각 첫 번째 2와 마지막 2의 위치를 저장합니다. 초기값은 -1로 설정하여 배열에 2가 없는 경우를 처리합니다.
- 배열 순회:
- 배열을 순회하면서 arr[i]가 2일 때 s가 -1이면 s를 i로 설정합니다.
- s가 이미 설정된 경우(s != -1), e를 i로 설정합니다.
- 특별한 경우 처리:
- 배열에 2가 없는 경우 (s == -1), [-1]을 반환합니다.
- 배열에 2가 한 번만 등장하는 경우 (s != -1 && e == -1), [2]을 반환합니다.
- 부분 배열 생성:
- s와 e 사이의 부분 배열을 생성하고 result 배열에 복사합니다.
- 결과 반환:
- 최종적으로 result 배열을 반환합니다.
정답은 더보기 클릭
더보기
class Solution {
public int[] solution(int[] arr) {
// s: 첫 번째 2의 위치를 저장할 변수, 초기값은 -1
// e: 마지막 2의 위치를 저장할 변수, 초기값은 -1
int s = -1;
int e = -1;
// 배열을 순회하면서 첫 번째와 마지막 2의 위치를 찾는다.
for (int i = 0; i < arr.length; i++) {
// 2를 찾았고, 첫 번째 2의 위치를 아직 모르는 경우
if (arr[i] == 2 && s == -1) {
s = i; // 첫 번째 2의 위치를 저장
}
// 2를 찾았고, 첫 번째 2의 위치를 이미 알고 있는 경우
else if (arr[i] == 2 && s != -1) {
e = i; // 마지막 2의 위치를 저장
}
}
// 배열에 2가 없는 경우
if (s == -1) {
return new int[] {-1};
}
// 배열에 2가 한 번만 등장한 경우
else if (s != -1 && e == -1) {
return new int[] {2};
}
// 첫 번째 2와 마지막 2 사이의 부분 배열을 생성
int[] result = new int[e - s + 1];
int index = 0;
// 부분 배열에 값을 복사
for (int i = s; i <= e; i++) {
result[index++] = arr[i];
}
// 결과 배열 반환
return result;
}
}
728x90
'프로그래머스(Java) > Level 0' 카테고리의 다른 글
[프로그래머스] k의 개수 (0) | 2024.07.19 |
---|---|
[프로그래머스] 가까운 수 (0) | 2024.07.19 |
[프로그래머스] 약수 구하기 (0) | 2024.07.18 |
[프로그래머스] 수열과 구간 쿼리 4 (0) | 2024.07.17 |
[프로그래머스] 문자열 뒤집기 (0) | 2024.07.16 |