반응형
알고리즘
JAVA 프로그래머스 같은 숫자는 싫어
1. 문제
https://programmers.co.kr/learn/courses/30/lessons/12906
2. 풀이
크게 어려운 개념은 없었지만 for문, if문이 헷갈려서 정리해봤다. 원래는 배열의 앞뒤숫자를 비교해서 푸는 방법으로 먼저풀려고 했는데 잘 되지 않았다. 다른풀이로 다시 공부!
import java.util.*;
class Solution {
public int[] solution(int []arr) {
// int[] arr = {1,1,3,3,0,1,1};
ArrayList<Integer> tempList = new ArrayList<Integer>();
int preNum = 10; //10이상의 숫자 아무거나(arr 원소가 9이하라서)
//아래for문과 같음
// for (int num : arr) {
// if (preNum != num)
// tempList.add(num);
// preNum = num;
// }
// tempList list에 넣어주기
for(int i=0; i<arr.length; i++) {
if(preNum != arr[i])
tempList.add(arr[i]);
preNum = arr[i];
}
// -------------------------------------
// | arr = {1, 1, 3, 3, 0, 1, 1}; |
// | i = 0, 1, 2, 3, 4, 5, 6 |
// | preNum = 1, /, 3, /, 0, 1, / |
// -------------------------------------
// System.out.println(tempList); [1,3,0,1]
// list에서 배열로 변환
int[] answer = new int[tempList.size()];
for(int i=0; i<answer.length; i++) {
answer[i] = tempList.get(i);
}
// System.out.println(Arrays.toString(answer));
return answer;
}
}
[다른사람의 풀이]
더 비효율적일 수도 있지만 풀려고 시도했던 풀이법으로 못풀면 답답....
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
int[] answer ;
int count = 1;
for(int i=1; i<arr.length; i++){
if(arr[i-1] != arr[i])
count++;
}
answer = new int[count];
count=1;
answer[0] = arr[0];
for(int i=1; i<arr.length; i++){
if(arr[i-1] != arr[i]){
answer[count] = arr[i];
count++;
}
}
return answer;
}
}
반응형
'알고리즘 > Java' 카테고리의 다른 글
[JAVA] 프로그래머스 3진법 뒤집기 (0) | 2021.11.11 |
---|---|
[JAVA] 프로그래머스 문자열 내 마음대로 정렬하기 (0) | 2021.11.11 |
[JAVA] 프로그래머스 하샤드 수 (0) | 2021.11.11 |
[JAVA] 프로그래머스 나누어 떨어지는 숫자 배열 (0) | 2021.11.11 |
[JAVA] 프로그래머스 정수 제곱근 판별 (0) | 2021.11.10 |