[programmers] 같은 숫자는 싫어(Java)

J-Cheol·2023년 12월 6일
0

프로그래머스

목록 보기
21/27
post-thumbnail

문제


프로그래머스 문제링크

풀이 코드


import java.util.*;

public class Solution {
    public int[] solution(int []arr) {
        List<Integer> num = new ArrayList<>();

        for(int arrNum : arr)
        {
            if(num.isEmpty() || num.get(num.size() - 1) != arrNum)
                num.add(arrNum);
        }
       
        int[] answer = new int[num.size()];
        int i = 0;
        for(int resultNum : num)
        {
            answer[i++] = resultNum;
        }
        return answer;
    }
}

리뷰


  1. 알고리즘 스택의 LIFO(후입 선출) 방식을 활용하여 접근하였습니다.
  2. 연속된 숫자는 1개만 남기며, 순서는 유지하는 문제입니다.
  3. List를 통해 배열의 크기를 동적할당하여 주었습니다.
    3-1. for-each문을 사용하여 arr배열에 있는 값들을 arrNum으로 대입하였습니다.
    3-2. 조건문을 통해 List num이 비어있거나, num 리스트의 마지막 인덱스를 확인하고 arrNum과 같지 않을때 List에 arrNum값을 추가해줍니다.
  4. List<Integer>을 int[ ]로 만들기 위해 size를 측정하여 할당하였습니다.
    4-1. for-each문을 활용하여 answer[i]에 resultNum을 반복적으로 수행하여 List의 값을 answer에 복사하였습니다.

스택


스택은 데이터를 저장할 때 사용하는 자료구조로, 데이터의 입력과 출력 순서는 후입선출(LIFO)방식입니다.
데이터를 제한적으로 접근할 수 있는 구조임며, 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 구조입니다.

스택의 특징


후입선출 (Last In, First Out; LIFO):

  • 스택은 가장 최근에 추가된 요소가 가장 먼저 제거되는 구조를 가지고 있습니다.
    책을 쌓아놓은 것처럼, 맨 위에 추가된 요소가 가장 먼저 꺼내지는 원리입니다.

푸쉬(Push)와 팝(Pop):
push: 새로운 요소를 스택에 추가하는 작업
pop: 가장 상위에 있는 요소를 제거하고 반환하는 작업

제한된 접근:
스택은 상위 요소에만 접근할 수 있습니다. 중간에 있는 요소에 직접 접근하려면 상위 요소를 차례로 제거해야 합니다.

profile
신입 백엔드 개발자(JAVA, Spring Boot, MYSQL)

0개의 댓글