티스토리 뷰

프로그래머스 12906번 - 같은 숫자는 싫어

프로그래머스 12906번 - https://programmers.co.kr/learn/courses/30/lessons/12906

 

요구사항

1. 배열에서 연속적으로 나타나는 숫자는 하나만 남기고 모두 제거하여 반환한다.

2. 단, 기존 배열의 순서는 그대로 따른다.

 

요구사항 분석 및  풀이과정

1. 연속적으로 나타나는 것을 제거하는 건 전형적인 Stack을 사용하는 문제 유형이다.

2. 배열을 순차적으로 순회한다.

3. 만약 Stack이 비어있지 않고 가장 최근에 삽입한(peek) 원소가 현재 원소와 같다면 연속적으로 등장하였다는 뜻이므로 삽입하지 않고 넘어간다.

4. 위의 상황에 해당하지 않으면 Stack에 삽입한다.

 

소스코드 작성

import java.util.Stack;

class Solution {
    
    public int[] solution(int[] arr) {
        Stack<Integer> result = new Stack<>();
        
        for(int v : arr) {
            if (!result.isEmpty() && result.peek() == v) {
                continue;
            }
            
            result.push(v);
        }

        return result.stream().mapToInt(Integer::intValue).toArray();
    }
}

 

결과

 

소스코드 깃허브 주소

링크

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함