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

2026. 2. 21. 19:19·알고리즘 & 자료구조/문제 풀이

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

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

1. 정답 풀이

스택과 큐 항목에 들어있지만 그냥 리스트로 하나씩 비교하면 된다고 생각해서 그렇게 구현함

정답은 배열하나씩 비교하면서 넣기 때문에 그 크기를 처음부터 정할 수 없기때문에 

동적배열인 ArraList를 사용했지만 return은 int[] 배열로 달라하니...
리스트를 int배열로 바꿀 수 밖에 없었다.

toArray와 같은 메서드를 쓰고 싶었지만 반환이 Integer[] 이라서 기각.
프로그래머스 아직 적응하려면 멀었다.

import java.util.*;

public class Solution {
    public int[] solution(int []arr) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(arr[0]);
        for(int i=1; i<arr.length; i++){
            int cur = list.get(list.size()-1);
            if(cur == arr[i]) continue;
            
            list.add(arr[i]);
        }
        int[] answer = new int[list.size()];
        for(int i=0; i<list.size(); i++) {
            answer[i] = list.get(i);
        }

        return answer;
    }
}

 

맞긴했지만 두가지를 다시 고민해봐야겠다.

스택/큐를 어떻게 활용할 수 있는지와

return을 다른 사람들은 어떻게 했는지.

-> 스택을 쓴다면
하나씩 넣다가 탑과 비교해서 넣을 지 말 지를 정하는 방법 
리스트 풀이랑 비슷함

 

-> return 타입
많은 사람들이 나처럼 리스트를 쓰고 배열로 바꾸는 과정을 추가했다.

하지만...
바꿔도 된다니... 
ArrayList<Integer> 로 반환타입을 바꿔도 되고

import java.util.*;

public class Solution {
    public ArrayList<Integer> solution(int []arr) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(arr[0]);
        for(int i=1; i<arr.length; i++){
            int cur = list.get(list.size()-1);
            if(cur == arr[i]) continue;
            
            list.add(arr[i]);
        }

        return list;
    }
}


Stack<Integer> 로 바꿔도 된다...

import java.util.*;

public class Solution {
    public Stack<Integer> solution(int []arr) {
        Stack<Integer> stack = new Stack<>();
        stack.add(arr[0]);
        for(int n : arr) {
            if(stack.peek() != n) {
                stack.add(n);
            }
        }

        return stack;
    }
}


추측컨데 프로그래머스 채점이
순서가 보장된 선형적 자료구조라면 다 통하는 것 같다.

'알고리즘 & 자료구조 > 문제 풀이' 카테고리의 다른 글

[프로그래머스 알고리즘 고득점 Kit][이분탐색][Java] 입국심사  (0) 2026.02.23
[프로그래머스 알고리즘 고득점 Kit][해시][Java] 의상  (0) 2026.02.22
[프로그래머스 알고리즘 고득점 Kit][해시][Java] 전화번호 목록  (0) 2026.02.20
[프로그래머스 알고리즘 고득점 Kit][해시][Java] 포켓몬  (0) 2026.02.17
[프로그래머스 알고리즘 고득점 Kit][정렬][Java] K번째 수  (0) 2026.02.16
'알고리즘 & 자료구조/문제 풀이' 카테고리의 다른 글
  • [프로그래머스 알고리즘 고득점 Kit][이분탐색][Java] 입국심사
  • [프로그래머스 알고리즘 고득점 Kit][해시][Java] 의상
  • [프로그래머스 알고리즘 고득점 Kit][해시][Java] 전화번호 목록
  • [프로그래머스 알고리즘 고득점 Kit][해시][Java] 포켓몬
수수다
수수다
우하하
  • 수수다
    그냥살자
    수수다
  • 전체
    오늘
    어제
    • 분류 전체보기 (40) N
      • 프로젝트 (1)
      • 알고리즘 & 자료구조 (21) N
        • 내용 정리 (2)
        • 문제 풀이 (19) N
      • 데이터베이스 (14) N
        • 내용 정리 (1) N
        • 문제 풀이 (13) N
      • CS (2)
      • 기타 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 네이버 블로그
  • 공지사항

  • 인기 글

  • 태그

    해시
    Java
    프로그래머스 알고리즘 고득점 kit
    삼성청년SW·AI아카데미
    coalesce
    유니온파인드
    싸피
    바이브코딩
    IFNULL
    매개변수탐색
    SQL
    바킹독
    코팅테스트
    이분탐색
    HTTP 메서드
    DP
    bfs
    DisjointSet
    평균회귀
    알고리즘
    코딩테스트
    SSAFY
    코테
    깊이/너비 우선 탐색(DFS/BFS)
    mysql
    분리집합
    유클리드호제법
    동적계획법
    그래프
    프로그래머스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
수수다
[프로그래머스 알고리즘 고득점 Kit][스택/큐][Java] 같은 숫자는 싫어
상단으로

티스토리툴바