문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/12906
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다.
배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요.
입출력 예시
풀이
0~9 사이의 수만 들어올 수 있기 때문에 temp값을 중복되지 않는 숫자인 -1로 임의로 설정하고 temp값을 arr[]와 비교하여 중복된 숫자가 아니라면 ArrayList에 추가하고 temp값을 업데이트 해주었습니다.
마지막으로 answer에 리스트 값을 차례대로 넣어주고 return 하였습니다.
※ 처음에는 Stack으로 구현했지만 효율성에서 List를 사용하는 것이 더 좋은 결과가 나왔습니다.
코드
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
ArrayList<Integer> numberList = new ArrayList<>();
int temp = -1;
for(int number : arr) {
if(number == temp) continue;
numberList.add(number);
temp = number;
}
int[] answer = new int[numberList.size()];
for(int index = 0; index < numberList.size(); index++) {
answer[index] = numberList.get(index);
}
return answer;
}
}
제한 사항
'Algorithm > Programmers' 카테고리의 다른 글
[Algorithm][Programmers] K번째수 (Java) (0) | 2023.07.20 |
---|---|
[Algorithm][Programmers] 타겟 넘버 (Java) (0) | 2023.07.19 |
[Algorithm][Programmers] 삼각 달팽이 (Java) (0) | 2023.07.19 |
[Algorithm][Programmers] 완주하지 못한 선수 (Java) (0) | 2023.07.19 |
[Algorithm][Programmers] 행렬 테두리 회전하기 (Java) (0) | 2023.07.18 |