[프로그래머스][Java] 같은 숫자는 싫어 (Lv.1) - 스택/큐

박현아·2024년 10월 26일
0

programmers-java

목록 보기
24/35

👩‍💻 문제

https://school.programmers.co.kr/learn/courses/30/lessons/12906

🙋‍♀️ 답변

import java.util.ArrayList;
import java.util.List;

public class Solution {
    public int[] solution(int[] arr) {
        
        List<Integer> result = new ArrayList<>();
        
        // 배열이 비어있지 않은 경우
        if (arr.length != 0) {
            result.add(arr[0]); // 첫 번째 요소 추가
        }
        
        // 배열을 순회하며 연속되는 숫자를 제거
        for (int i = 1; i < arr.length; i++) {
            // 현재 요소가 이전 요소와 다르면 추가
            if (arr[i] != arr[i - 1]) {
                result.add(arr[i]);
            }
        }
        
        // List를 int[]로 변환
        int[] answer = new int[result.size()];
        for (int i = 0; i < result.size(); i++) {
            answer[i] = result.get(i);
        }

        return answer;
    }
}

🤔

스택 사용 답변

import java.util.Stack;

public class Solution {
    public int[] solution(int[] arr) {
        
        Stack<Integer> stack = new Stack<>();
        
        // 배열을 순회
        for (int i = 0; i < arr.length; i++) {
            // 스택이 비어 있거나, 현재 요소가 스택의 최상단 요소와 다르면
            if (stack.isEmpty() || stack.peek() != arr[i]) {
                stack.push(arr[i]); // 스택에 현재 요소 추가
            }
        }
        
        // 스택의 크기로 결과 배열 생성
        int[] answer = new int[stack.size()];
        
        // 스택의 요소를 결과 배열로 이동
        for (int i = stack.size() - 1; i >= 0; i--) {
            answer[i] = stack.pop();
        }

        return answer;
    }
}

0개의 댓글