Study with me/프로그래머스 L0 마스터하기

프로그래머스 - L0 2의영역

외계나무 2024. 4. 6. 17:07

프로그래머스 - level 0 2의 영역

1. Brute-force

class Solution {
    public int[] solution(int[] arr) {
        int[] answer;
        int start = -1;
        int end = -2;
        for(int i=0; i<arr.length; i++) {
            if(arr[i]==2) {
                start = i;
                break;
            }
        }
        for(int i=arr.length-1; i>=0; i--) {
            if(arr[i]==2) {
                end = i;
                break;
            }
        }
        if(start == end) {
            answer = new int[1];
            answer[0] = 2;
        } else if(start < end) {
            int i = 0;
            answer = new int[end-start+1];
            for(int j=start; j<=end; j++) {
                answer[i++] = arr[j];
            }
        } else {
            answer = new int[1];
            answer[0] = -1;
        }
        return answer;
    }
}

 

2. Stream, ArrayList 사용하기

import java.util.*;
import java.util.stream.*;

class Solution {
    public int[] solution(int[] arr) {
        List<Integer> answer = Arrays.stream(arr)
                                    .boxed()
                                    .collect(Collectors.toList());
        while(true) {
            if(answer.size() == 0) {
                answer.add(-1);
                break;
            } else if(answer.get(0)==2 && answer.get(answer.size()-1)==2) {
                break;
            } else {
                if(answer.get(0)!=2) answer.remove(0);
                else if(answer.get(answer.size()-1)!=2) answer.remove(answer.size()-1);
            }
        }
        return answer.stream().mapToInt(Integer::intValue).toArray();
    }
}