Computer/Algorithm_Java
[Programmers] 같은 숫자는 싫어 (Success)
HJ0216
2023. 9. 16. 09:14
728x90
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
☕Language: Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
import java.util.ArrayList;
import java.util.List;
public class Solution {
public int[] solution(int []arr) {
// 1. 연속된 값에 대해서만 중복 제거: Set, Map X
// 2. 순서 유지
int[] answer = {};
List<Integer> list = new ArrayList<>();
list.add(arr[0]);
for(int i = 1; i<arr.length; i++) {
if(arr[i-1]!=arr[i])
list.add(arr[i]);
}
answer = new int[list.size()];
int j = 0;
for(int i : list){
answer[j++] = i;
}
return answer;
}
}
|
🤔 해설
1. if(arr[i-1]!=arr[i]) list.add(arr[i]);
- 이전 원소와 현재 원소가 같지 않을 경우에만 list에 추가
😮 이 외의 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
import java.util.ArrayList;
import java.util.List;
public class Solution {
public int[] solution(int []arr) {
List<Integer> list = new ArrayList<Integer>();
int preNum = -1;
for(int num : arr) {
if(preNum != num)
list.add(num);
preNum = num;
}
int[] answer = new int[list.size()];
for(int i=0; i<answer.length; i++) {
answer[i] = list.get(i).intValue();
}
return answer;
}
}
|
1. if(preNum != num)
- preNum을 선언하여 이전 숫자와 비교
2. intValue()
- Integer → int 변환
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import java.util.LinkedList;
public class Solution {
public int[] solution(int []arr) {
LinkedList<Integer> list = new LinkedList<Integer>();
list.add(arr[0]);
for(int i=1; i<arr.length; i++){
if(arr[i]!=list.getLast()){
list.add(arr[i]);
}
}
Integer[] listing = list.toArray(new Integer[list.size()]);
int[] answer = Arrays.stream(listing).mapToInt(Integer::intValue).toArray();
return answer;
}
}
|
1. getLast();
- LinkedList 함수: 마지막 값 출력, 이전 원소값
2. mapToInt(Integer::intValue)
- mapToInt(): 스트림의 각 요소를 변환하고, 새로운 스트림을 반환
- Integer::intValue: 메서드 레퍼런스(Method Reference), Integer 클래스의 intValue() 메서드
- Integer 객체를 정수형(int) 값으로 변환
🔗 소스 코드
GitHub
📚 참고 자료
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
728x90