728x90
코드 힌트
- ArrayList 사용하기:
- ArrayList는 동적으로 크기가 변하는 배열입니다. 요소를 추가하거나 제거할 때 유용합니다. ArrayList를 사용하면 리스트의 끝에 새로운 요소를 추가하거나, 리스트에서 기존의 요소를 쉽게 제거할 수 있습니다.
- for 문으로 배열 요소 순회하기:
- for 문을 사용하여 배열의 각 요소를 순차적으로 처리합니다. 배열의 길이만큼 반복하여 각 요소를 확인하고 필요한 작업을 수행합니다.
- true일 때의 처리:
- 만약 flag[i]가 true일 때는, arr[i]의 값을 리스트에 추가합니다.
- 예시: arr[i]가 3일 때, 리스트에 3을 2배인 6번 추가합니다.
- 설명: add(element) 메소드를 사용하여 요소를 리스트의 끝에 추가합니다. 예를 들어, add(3)을 하면 리스트의 끝에 3이 추가됩니다.
- 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
'프로그래머스(Java) > Level 0' 카테고리의 다른 글
[프로그래머스] 1로 만들기 (0) | 2024.08.12 |
---|---|
[프로그래머스] 조건에 맞게 수열 변환하기 2 (0) | 2024.08.12 |
[프로그래머스] 날짜 비교하기 (0) | 2024.08.08 |
[프로그래머스] 옹알이 (1) (0) | 2024.08.08 |
[프로그래머스] 중복된 문자 제거 (0) | 2024.08.08 |