728x90
https://school.programmers.co.kr/learn/courses/30/lessons/181859
[ 문제 설명 ]
문제에 따르면 i 가 arr[] 길이보다 작을 때 조건을 수행하며 i에 +1 씩 증가시키라고 하는 것을 보아 ,
for 문을 수행하면 될 것 같단 생각이 든다.
반복문을 돈다고 가정하고, 그 안에서 조건을 요약하면 이렇다.
- stk 가 비었으면 arr[ i ] 추가
- stk 마지막 원소와 arr[ i ] 가 같음 -> stk 마지막 원소 제거
- stk 마지막 원소와 arr[ i ] 가 다름 -> arr[ i ] 추가
[ 입출력 예 ]
주어진 예시 중 첫번째 입출력 예시를 살펴보자
표에서는 마지막 원소가 다를 때 비교를 순서로 그려봤다.
문제에 따라 작성한 조건문
stk 는 동적임으로(길이가 정해져있지않음) 먼저 리스트로 생성한다.
조건에 따라 i를 1씩 추가해주는 반복문은 다음과 같다
for(int i=0; i<arr.length(); i++){ // 빈 배열인 경우, 마지막 원소 같은경우, 마지막 원소 다른경우 }
처음에 stk 가 비어있으니 arr[0] 에 해당하는 원소 0 을 stk 에 추가한다.
그다음,
1번 -> stk 의 마지막 원소와 arr [i] 의 원소인 1을 비교한다
2번 -> 원소가 다른 것을 확인하고 규칙을 확인한다
3번 -> 규칙에 따라, arr [i] 의 원소 1을 stk 에 추가한다.
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
List<Integer> stk = new ArrayList<>();
int size;
for(int i=0; i<arr.length; i++){
size = stk.size();
if(size < 1){
stk.add(arr[i]);
} else if(stk.get(size-1).equals(arr[i])){
stk.remove(size-1);
} else {
stk.add(arr[i]);
}
}
size = stk.size();
if(size<1){
stk.add(-1);
size ++;
}
int[] answer = new int[size];
for(int i=0; i<size; i++){
answer[i] = stk.get(i);
}
return answer;
}
}
728x90
'코테연습 > 프로그래머스' 카테고리의 다른 글
코딩 기초 트레이닝 > 문자열 묶기 Java #getOrDefault() (0) | 2023.11.20 |
---|---|
⭐ 코딩 기초 트레이닝 > 무작위로 K개의 수 뽑기 Java (0) | 2023.11.20 |
코딩 기초 트레이닝 > 조건에 맞게 수열 반환하기 2 Java / 배열비교 Arrays.equals() (0) | 2023.11.01 |
코딩 기초 트레이닝 > 왼쪽 오른쪽 Java #Arrays.copyOf (2) | 2023.10.25 |
⭐ 코딩테스트 입문 > 외계행성의 나이 #insert() (0) | 2023.09.25 |