[프로그래머스 - 알고리즘] 스택/큐 같은 숫자는 싫어

jjuya·2024년 3월 30일
0

코딩테스트

목록 보기
5/10

문제풀이 순서

  1. 반복문을 돌면서 배열에 있는 숫자 Stack에 삽입
    1-1. 맨 처음 숫자는 무조건 담기
    1-2. 다음부터는 스택에 담겨있는 숫자와 비교해서 같지 않을경우에만 넣기
  2. answer의 사이즈 Stack에 사이즈로 만들기
  3. Stack에 있는 숫자 꺼내기
    여기서 주의! Stack은 후입선출(LIFO : Last In First Out) 방식으로 자료를 처리함 (arr의 배열의 순서를 유지 해야함으로 역순으로 담아야함)

Stack

Stack<T> 스택 이름 = new Stack<>();
  • add() : 값을 추가
  • push() : 데이터 스택에 추가, 해당값 반환
  • pop() : 값 하나씩 빼낼수 있음
    스택에서 값이 제거 되면서 동시에 값 반환
  • clear() : 값 모두 제거 / 반환되는 값이 없음
  • peak() : 스택의 마지막 요소 반환, 스택에는 변화를 주지 않음
    스택이 비어있을경우, NoSuchElementException 예외 발생

코드

import java.util.*;

public class Solution {
    public int[] solution(int []arr) {
        int[] answer;

		Stack<Integer> st = new Stack<>();

		for(int i=0; i < arr.length; i++){

			if(i == 0){ //처음 무조건 넣음
            	st.push(arr[i]);
			}else if(st.peek() != arr[i]){ //스택의 최상단값(peek)이 같지 않을경우에만 삽입
            	st.push(arr[i]);
            } 
         }

		answer = new int[st.size()];

		// 역순으로 담아야함 - pop해서 꺼내기
        for(int i = st.size()-1; i >=0; i--){
        	answer[i] = st.pop();
        }


		System.out.println("Hello Java"); 
        return answer;
    }
}
profile
Review the Record⭐

0개의 댓글