import java.util.ArrayList;
class Solution {
public int[] solution(int[] arr) {
ArrayList<Integer> stkArray = new ArrayList<Integer>();
for(int i = 0; i < arr.length; i++){
if(stkArray.size() == 0 ){
stkArray.add(arr[i]);
i += 1 ;
}else if(stkArray.get(stkArray.size()-1) < arr[i]){
stkArray.add(arr[i]);
i += 1 ;
}else if(stkArray.get(stkArray.size()-1) >= arr[i]){
stkArray.remove(stkArray.size()-1);
}else {
}
}
int[] stk = new int[stkArray.size()];
for(int i =0;i < stkArray.size();i++){
stk[i] = stkArray.get(i);
}
return stk;
}
}
처음 생각해본 코드방향! 테스트는 통과했지만 제출은 틀린답으로 나왔다ㅠㅠㅠ 다시!!
추가로->
import java.util.ArrayList;
class Solution {
public int[] solution(int[] arr) {
ArrayList<Integer> stkArray = new ArrayList<Integer>();
for(int i = 0; i < arr.length; i++){
if(stkArray.size() == 0 || stkArray.get(stkArray.size()-1) < arr[i]){
stkArray.add(arr[i]);
} else {
int last = stkArray.get(stkArray.size() - 1);
while (!stkArray.isEmpty() && last >= arr[i]) {
stkArray.remove(stkArray.size() - 1);
if (!stkArray.isEmpty()) {
last = stkArray.get(stkArray.size() - 1);
}
}
stkArray.add(arr[i]);
}
}
int[] stk = new int[stkArray.size()];
for(int i = 0; i < stkArray.size(); i++){
stk[i] = stkArray.get(i);
}
return stk;
}
}
더해서 찾아본 코드!1
import java.util.ArrayList;
class Solution {
public int[] solution(int[] arr) {
ArrayList<Integer> tmp= new ArrayList();
int i=0;
while(i<arr.length){
if(tmp.size()==0){
tmp.add(arr[i]);
i=i+1;
}
else{
int last=tmp.get(tmp.size()-1);
if(tmp.size()!=0 && last<arr[i]){
tmp.add(arr[i]);
i=i+1;
}
else if(tmp.size()!=0 && last>=arr[i]){
tmp.remove(tmp.size()-1);
}
}
}
int stk[]=new int[tmp.size()];
for(int k=0;k<tmp.size();k++){
stk[k]=tmp.get(k).intValue();
}
return stk;
}
}
형식으로 선언하고, 값 넣는 건 .add(), 지우는건 .remove(), 크기는 .size() 이다. 그리고 다시 stk배열에 넣어줬다.
Integer타입이기 때문에 .intValue()를 이용해서 넣어줬다.
import java.util.*;
class Solution {
public Stack<Integer> solution(int[] arr) {
Stack<Integer> stack = new Stack<>();
int i = 0;
while (i < arr.length) {
if (stack.empty() || stack.peek() < arr[i]) {
stack.push(arr[i]);
i++;
} else if (stack.peek() >= arr[i]) {
stack.pop();
}
}
return stack;
}
}
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
ArrayList<Integer> arrayList = new ArrayList<>();
int i = 0;
while (i < arr.length) {
if (arrayList.isEmpty()) {
arrayList.add(arr[i]);
i += 1;
} else if (arrayList.get(arrayList.size() - 1) < arr[i]) {
arrayList.add(arr[i]);
i += 1;
} else if (arrayList.get(arrayList.size() - 1) >= arr[i]) {
arrayList.remove(arrayList.size() - 1);
}
}
int idx = 0;
int[] stk = new int[arrayList.size()];
for (int data : arrayList)
stk[idx++] = data;
return stk;
}
}
import java.util.Stack;
class Solution {
public int[] solution(int[] arr) {
Stack<Integer> stack = new Stack<>();
for (int num : arr) {
while (!stack.isEmpty() && num <= stack.peek())
stack.pop();
stack.push(num);
}
return stack.stream().mapToInt(i -> i).toArray();
}
}
'알고리즘 테스트 공부' 카테고리의 다른 글
글자 이어 붙여 문자열 만들기 (0) | 2024.01.10 |
---|---|
주사위게임 3 (1) | 2024.01.09 |
간단한 논리 연산 (0) | 2024.01.05 |
콜라츠 수열만들기 (0) | 2024.01.04 |
카운트 업 (1) | 2024.01.03 |