Coding Test/Java Coding Test
[프로그래머스 / 자바] - 빈 배열에 추가, 삭제하기
nam_ji
2024. 6. 15. 20:04
빈 배열에 추가, 삭제하기
문제
- 정수 배열 arr과 논리형 배열 flag가 매개변수로 주어집니다. (길이는 같습니다.)
- 빈 배열 X가 있을 때, flag가 차례로 순회하여
- flag[i] 번째 원소가 true면, arr[i]를 arr[i] * 2번 추가하고,
- flag[i] 번째 원소가 false면, X에서 마지막 arr[i]개의 원소를 제거한 뒤
- X를 출력하는 문제입니다.
테스트 (인텔리제이)
- 빈 배열에 추가할 수 있도록 List인 answer를 만들고
- for문을 arr이나 flag의 크기만큼 순회하도록 하게 하고
- if문을 통해 flag의 원소가 true면
- 안에 for문을 추가하여 첫 번째 for문의 인덱스를 이용하여 arr의 원소를 꺼내 2를 곱한만큼 순회하도록 합니다.
- 그 안에 answer의 add 메서드를 이용하여 arr의 해당 원소를 for문 만큼 추가하도록 하고
- else 문에는 또 다른 for문을 이용하고
- answer의 remove 메서드를 이용하여 answer의 크기에서 1을 뺸 위치의 값을 삭제해줍니다.
import java.util.ArrayList;
import java.util.List;
public class 빈_배열에_추가_삭제하기 {
public static void main(String[] args) {
/*
정수 배열 arr과 논리형 배열 flag가 매개변수로 주어집니다.
(길이는 같습니다.)
빈 배열 X가 있을 때,
flag가 차례로 순회하여
flag[i] 번째 원소가 true면, arr[i]를 arr[i] * 2번 추가하고,
flag[i] 번째 원소가 false면, X에서 마지막 arr[i]개의 원소를 제거한 뒤
X를 출력하는 문제입니다.
입출력 예시
arr flag result
[3, 2, 4, 1, 3] [true, false, true, false, false] [3, 3, 3, 3, 4, 4, 4, 4]
입출력 설명
i flag[i] arr[i] X
[]
0 true 3 [3, 3, 3, 3, 3, 3]
1 false 2 [3, 3, 3, 3]
2 true 4 [3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4]
3 false 1 [3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4]
4 false 3 [3, 3, 3, 3, 4, 4, 4, 4]
*/
int[] arr = {3, 2, 4, 1, 3};
boolean[] flag = {true, false, true, false, false};
List<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++) {
answer.remove(answer.size() - 1);
}
}
}
System.out.println(answer);
}
}
프로그래머스 코드
import java.util.*;
class Solution {
public List solution(int[] arr, boolean[] flag) {
List<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++) {
answer.remove(answer.size() - 1);
}
}
}
return answer;
}
}