본문 바로가기

프로그래머스(Java)/Level 0

[프로그래머스] 빈 배열에 추가, 삭제하기

728x90

코드 힌트

  1. ArrayList 사용하기:
    • ArrayList는 동적으로 크기가 변하는 배열입니다. 요소를 추가하거나 제거할 때 유용합니다. ArrayList를 사용하면 리스트의 끝에 새로운 요소를 추가하거나, 리스트에서 기존의 요소를 쉽게 제거할 수 있습니다.
  2. for 문으로 배열 요소 순회하기:
    • for 문을 사용하여 배열의 각 요소를 순차적으로 처리합니다. 배열의 길이만큼 반복하여 각 요소를 확인하고 필요한 작업을 수행합니다.
  3. true일 때의 처리:
    • 만약 flag[i]가 true일 때는, arr[i]의 값을 리스트에 추가합니다.
    • 예시: arr[i]가 3일 때, 리스트에 3을 2배인 6번 추가합니다.
    • 설명: add(element) 메소드를 사용하여 요소를 리스트의 끝에 추가합니다. 예를 들어, add(3)을 하면 리스트의 끝에 3이 추가됩니다.
  4. false일 때의 처리:
    • 만약 flag[i]가 false일 때는, 리스트에서 arr[i]만큼의 요소를 제거합니다.
    • 예시: arr[i]가 2일 때, 리스트에서 마지막 2개의 요소를 제거합니다.
    • 설명: remove(int index) 메소드를 사용하여 특정 위치의 요소를 제거합니다. 예를 들어, remove(2)를 하면 인덱스 2에 있는 요소가 제거됩니다.

예시:

// flag[i]가 true일 때의 예시
int value = 3; // arr[i]의 값
for (int j = 0; j < value * 2; j++) {
    list.add(value); // 리스트에 3을 6번 추가
}

// flag[i]가 false일 때의 예시
int value = 2; // arr[i]의 값
for (int j = 0; j < value; j++) {
    list.remove(list.size() - 1); // 리스트의 마지막 요소를 제거
}

 

 


정답은 더보기 클릭

더보기
import java.util.*;

class Solution {
    public int[] solution(int[] arr, boolean[] flag) {
        // 결과를 저장할 리스트를 초기화합니다.
        List<Integer> list = new ArrayList<>();
        
        // 주어진 배열(arr)과 불리언 배열(flag)을 순회합니다.
        for (int i = 0; i < arr.length; i++) {
            // flag[i]가 true이면, arr[i]의 값만큼 요소를 리스트에 추가합니다.
            if (flag[i]) {
                for (int j = 0; j < arr[i] * 2; j++) {
                    list.add(arr[i]);
                }
            } else {
                // flag[i]가 false이면, 리스트에서 arr[i]만큼 요소를 제거합니다.
                for (int j = 0; j < arr[i]; j++) {
                    // 리스트에서 마지막 요소를 제거합니다.
                    list.remove(list.size() - 1);
                }
            }
        }
        
        // 리스트의 내용을 배열로 변환합니다.
        int[] result = new int[list.size()];
        for (int i = 0; i < result.length; i++) {
            result[i] = list.get(i);
        }
        
        return result;
    }
}
728x90