나는 같은 숫자가 싫어

소식



제 생각에는

이 문제는 부트캠프에서 스택으로 해결해야 할 문제를 최대한 스택으로 해결한 문제입니다.

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;
    }
}