inblog logo
|
silver
    알고리즘문제풀기

    [알고리즘문제풀기] 빈 배열에 추가, 삭제하기

    silver's avatar
    silver
    Apr 12, 2025
    [알고리즘문제풀기] 빈 배열에 추가, 삭제하기
    Contents
    문제내가 작성한 정답다른 사람들의 정답

    문제

    school.programmers.co.kr
    https://school.programmers.co.kr/learn/courses/30/lessons/181860

    내가 작성한 정답

    ArrayList

    import java.util.*; class Solution { public int[] solution(int[] arr, boolean[] flag) { ArrayList<Integer> answer = new ArrayList<>(); for(int i =0; i<arr.length; i++){ if(flag[i]){ for(int j=0; j<arr[i]*2; j++){ answer.add(arr[i]); } } else { for(int k=0; k<arr[i]; k++){ if(!answer.isEmpty()) answer.remove(answer.size()-1); } } } return answer.stream().mapToInt(i->i).toArray(); } }

    StringBuilder

    import java.util.*; class Solution { public int[] solution(int[] arr, boolean[] flag) { StringBuilder sb = new StringBuilder(); for(int i =0; i<arr.length; i++){ if(flag[i]){ for(int j=0; j<arr[i]*2; j++){ sb.append(arr[i]); } } else { for(int j=0; j<arr[i]; j++) sb.deleteCharAt(sb.length()-1); } } return Arrays.stream(sb.toString().split("")) .mapToInt(i-> Integer.parseInt(i)).toArray(); } }

    Stack(LIFO)

    import java.util.*; class Solution { public int[] solution(int[] arr, boolean[] flag) { Stack<Integer> st = new Stack<>(); for(int i =0; i<arr.length; i++){ if(flag[i]){ for(int j=0; j<arr[i]*2; j++){ st.push(arr[i]); } } else { for(int j=0; j<arr[i]; j++){ st.pop(); } } } // int[] answer = new int[st.size()]; // 1. pop 이용 -> 뒤에서부터 팝! // for(int i = st.size()-1; i>=0; i--){ // answer[i] = st.pop(); // } // 2. get 이용 -> 순서대로! // for(int i = 0; i<st.size(); i++){ // answer[i] = st.get(i); // } // return answer; // 3. stream 이용 return st.stream().mapToInt(i->i).toArray(); } }

    다른 사람들의 정답

    String

    import java.util.stream.Stream; class Solution { public int[] solution(int[] arr, boolean[] flag) { String answer = ""; for(int idx=0; idx<arr.length; idx++) { if(flag[idx]) { answer += String.valueOf(arr[idx]).repeat(arr[idx]*2); } else { answer = answer.substring(0, answer.length() - arr[idx]); } } return Stream.of(answer.split("")).mapToInt(Integer::parseInt).toArray(); } }
    Share article

    silver

    RSS·Powered by Inblog