소식

제 생각에는
이 문제는 부트캠프에서 스택으로 해결해야 할 문제를 최대한 스택으로 해결한 문제입니다.
while – for 문을 이용한 해결 방법으로 시작 정수형으로 (start + 1)에서 arr.size()로 가면서 같은 값이 없으면 psuh()ing으로 스택에 접근한다.
length()와 legnth()-1이 같으면 무한 논리가 실행되고 if 문이 추가되는데 이 경우 숫자만 따로 처리한다.
내 대답
public static int() solution(int() arr) {
Stack stack = new Stack();
int start = 0;
while(start < arr.length){
for (int i = start; i < arr.length; i++) {
if (arr(start) != arr(i)) {
stack.push(arr(start));
start = i;
break;
} else if ( i == arr.length-1) {
stack.push(arr(start));
start = arr.length;
break;
}
}
}
int() answer = new int(stack.size());
for (int i = 0; i < stack.size(); i++) {
answer(i) = (int)stack.get(i);
}
return answer;
}
다른 답변
주어진 조건을 보고 잘 풀린 문제처럼 보이는 답을 찾으세요. 1부터 9까지 숫자를 주면 나머지 숫자는 무조건 다르다.
다른 경우 기본값으로 루프를 반복하여 목록에 값을 추가합니다. -> 기본 정수 유형을 적절한 값으로 다시 초기화합니다.
특히 시간 복잡도 측면에서 이 방법은 매우 효율적인 코드이므로 코드를 잘 기억해야 합니다.
import java.util.*;
public class Solution {
public int() solution(int ()arr) {
ArrayList<Integer> tempList = new ArrayList<Integer>();
int preNum = 10;
for(int num : arr) {
if(preNum != num)
tempList.add(num);
preNum = num;
}
int() answer = new int(tempList.size());
for(int i=0; i<answer.length; i++) {
answer(i) = tempList.get(i).intValue();
}
return answer;
}
}
