import java.util.List; import java.util.ArrayList; class Solution { public int[] solution(int[] arr) { List<Integer> answer = new ArrayList<>(); int arr_index = 0; while(arr_index < arr.length) { int answer_index = 0; while(answer_index < arr[arr_index]) { answer.add(arr[arr_index]); answer_index++; } arr_index++; } int[] result = new int[answer.size()]; int idx = 0; while (idx < answer.size()) { result[idx] = answer.get(idx); idx++; } return result; } }
- arr배열 하나에 들어있는 숫자만큼 배열을 추가하는 문제입니다.
arr[0] = 5 라면 int[] answer = {5, 5, 5, 5, 5} 이런식으로 배열을 추가하는 방식입니다.List<Integer>
는 해당 List가 정수형(Integer)의 원소를 가지는 List임을 나타냅니다.
2-1.ArrayList
는 크기를 동적으로 조절할 수 있는 배열 기반의 리스트입니다.
2-2. 정수를 원소로 가지는 동적 배열이 되며, 필요에 따라 크기가 자동으로 조절될 수 있습니다.- 이중 While문을 사용하여 n번째 index에 있는 값을 answer에 추가해줍니다.
3-1. answer_index < arr[arr_index]를 해주어 그 값만큼 answer에 값을 추가합니다.
3-2. 3-1이 완료된 후 arr_index가 증가하여 다음 arr index에 접근하여 3-1을 반복합니다.- 문제에서 int배열 형태로 반환을 해주어야하기에 result라는 int배열을 생성하여 List타입의 answer를 result에 대입하여 문제를 마칩니다.