반응형
https://school.programmers.co.kr/learn/courses/30/lessons/181894
문제 설명
정수 배열 arr가 주어집니다. 배열 안의 2가 모두 포함된 가장 작은 연속된 부분 배열을 return 하는 solution 함수를 완성해 주세요.
단, arr에 2가 없는 경우 [-1]을 return 합니다.
제한사항
1 ≤ arr의 길이 ≤ 100,000
1 ≤ arr의 원소 ≤ 10
배열에 2가 없다면 {-1}을 배열에 2가 하나이면 {2}를 반환하고,
2가 2개 이상 존재한다면 처음 2와 마지막 2를 포함한 그 사이의 배열을 반환하면 되는 문제이다.
처음으로는 배열을 처음부터 검사하면서 2의 개수를 카운트하고 해당 인덱스를 리스트에 추가해 주었다.
그다음으로는 2의 개수가 0이라면 {-1}을 반환하며 작업이 끝나도록 하고
그렇지 않은 수는 인덱스를 저장한 리스트를 가지고 배열을 잘라주고 해당 배열을 반환하도록 코드를 작성하였다.
전체 코드
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
int cnt=0;
List<Integer> list = new ArrayList<>();
for(int i=0;i<arr.length;i++){
if(arr[i]==2){
cnt++;
list.add(i);
}
}
if(cnt==0){
return new int[]{-1};
}
int[] answer = Arrays.copyOfRange(arr, list.get(0),list.get(list.size()-1)+1);
return answer;
}
}
728x90
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 추억 점수 자바 java (0) | 2023.08.19 |
---|---|
[프로그래머스] 배열 조각하기 자바 java (0) | 2023.08.17 |
[프로그래머스] 리스트 자르기 자바 java (0) | 2023.08.17 |
[프로그래머스] 문자열 뒤집기 자바 java (0) | 2023.08.15 |
[프로그래머스] 문자열 여러 번 뒤집기 자바 java (0) | 2023.08.14 |
댓글