제가 공부한 내용을 정리하는 블로그입니다.
아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁
Programmers 알고리즘 고득점 Kit입니다.
포인트
연속적으로 나타나는 숫자를 파악하기 위해 list나 배열에 index를 통해 확인할 수 있지만
LIFO구조의 Stack이라는 자료구조를 통해 더 효율적으로 문제를 풀 수 있다.
소스코드
import java.util.*;
public class Solution {
public int[] solution(int[] arr) {
Stack<Integer> ans = new Stack<>();
for (int num: arr) {
if (ans.isEmpty() || ans.peek() != num) {
ans.add(num);
}
}
return ans.stream().mapToInt(Integer::intValue).toArray();
}
}
코드 설명
- Stack<Integer> ans = new Stack<>();
- Integer 타입을 저장하는 스택을 선언한다.
- if (ans.isEmpty() || ans.peek() != num)
- 스택이 비어있거나 마지막으로 넣은 값과 연속적이지 않으면 스택에 값을 넣는다.
- return ans.stream().mapToInt(Integer::intValue).toArray();
- int[] 배열로 반환한다.
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[코딩테스트] Java 올바른 괄호 (0) | 2024.11.09 |
---|---|
[코딩테스트] Java 기능개발 (0) | 2024.11.09 |
[코딩테스트] Java 베스트 앨범 (4) | 2024.11.08 |
[코딩테스트] Java 의상 (0) | 2024.11.08 |
[코딩테스트] Java 전화번호 목록 (1) | 2024.11.08 |