문제 소개
오늘 풀었던 프로그래머스 - 같은 숫자는 싫어 문제를 정리합니다.
이 문제는 주어진 배열에서 연속해서 같은 숫자가 나오는 경우, 중복을 제거하고 하나만 남겨서 배열을 다시 구성하는 문제입니다.
단, 원래 순서(order)는 유지되어야 합니다.
문제 링크: 같은 숫자는 싫어 - 프로그래머스
문제 접근 방식
이 문제는 다음과 같은 방식으로 접근했습니다:
- 처음 숫자는 무조건 저장
- 이후 숫자를 순회하면서, 이전 숫자와 다를 경우만 저장
- List에 순차적으로 추가하면서 조건 체크 → 마지막에 배열로 변환
해결 과정 및 코드
핵심 아이디어
- 마지막으로 추가된 값과 현재 값이 같지 않을 때만 추가
- ArrayList를 이용해 동적으로 값 저장
- 마지막에 List → int[] 변환
코드
시간 복잡도 : O(N)
import java.util.*;
public class Solution {
public int[] solution(int[] arr) {
ArrayList<Integer> stack = new ArrayList<>();
stack.add(arr[0]);
for (int i = 1; i < arr.length; i++) {
if (stack.get(stack.size() - 1) != arr[i]) {
stack.add(arr[i]);
}
}
return stack.stream().mapToInt(Integer::intValue).toArray();
}
}'Algorithm > Coding Test Records' 카테고리의 다른 글
| [프로그래머스] 올바른 괄호 (시뮬레이션) (0) | 2025.05.17 |
|---|---|
| [프로그래머스] 기능개발 (시뮬레이션) (0) | 2025.05.16 |
| [프로그래머스] 베스트앨범 (Hash) (1) | 2025.05.14 |
| [프로그래머스] 의상 (Hash) (0) | 2025.05.13 |
| [프로그래머스] 전화번호 목록 (Hash) (0) | 2025.05.12 |