[ Programmers ] _ 같은 숫자는 싫어( with java )
https://school.programmers.co.kr/learn/courses/30/lessons/12906
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
📚 Table of Contents
문제
문제 설명
제한사항
입출력 예
문제 풀이
문제 접근 ( 알고리즘 )
- Integer Stack 생성
- 입력 배열 크기 만큼 반복,
- 우선 arr[ 0 ] 값 Stack에 추가
- 우선 arr[ 0 ] 값 Stack에 추가
- 다음 인덱스 부터 Stack
peek()
값과 다른 경우만 추가
- 출력 배열 생성
- 크기는 Stack의 크기 만큼
- 크기는 Stack의 크기 만큼
- Stack 모든 값을 출력 배열에 넣는다.
- Stakc은 입력의 연순순으로 출력하므로
- 배열에 역순으로 담는다.
풀이
Stack 사용
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
//integer를 담는 Stack 선언
Stack<Integer> st = new Stack<Integer>();
// 입력 배열의 크기만큼 반복
for(int i = 0; i < arr.length; i++) {
// 배열의 첫 요소인 경우
if(i == 0) {
st.push(arr[i]);
}
// 다음 인덱스(1) 부터는, stack의 최상단의 값(peek)이 arr[i]의 값과 일치여부 확인 후
// 일치하지 않을 경우에만 stack에 해당 값 push
else if(st.peek() != arr[i]){
st.push(arr[i]);
}
}
// 결과값 answer의 사이즈는 stack의 사이즈와 동일하게 생성
int[] answer = new int[st.size()];
// stack의 모든 data를 꺼낸다. pop()
// stack에서 꺼내는 값은 실제 배열의 역순이므로
// 역순으로 담는다 (i는 st.size()-1부터 시작, -1씩 줄여가며 i가 0보다 클때까지)
for(int i = st.size() - 1; i >= 0; i--) {
answer[i] = st.pop();
}
return answer;
}
}
'Coding > Programers' 카테고리의 다른 글
[ Programmers ] _ 짝수는 싫어요 ( java ) (0) | 2023.12.18 |
---|---|
[ Programmers ] _ 프로세스 ( java ) (0) | 2023.12.16 |
[ Programmers ] _ 의상 ( java ) (0) | 2023.12.14 |
[ Programmers ] _ 나누어 떨어지는 숫자 배열 ( java ) (0) | 2023.12.13 |
[ Programmers ] _ 기능개발 ( java ) (1) | 2023.12.12 |