[2020-11-05] 같은 숫자는 싫어
2020. 11. 5. 14:30ㆍ코딩테스트
푼 시간 : 30분
언어 : 자바
programmers.co.kr/learn/courses/30/lessons/12906
코딩테스트 연습 - 같은 숫자는 싫어
배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은
programmers.co.kr
쉬웠고 금방 푼 문제였다.
근데 맨날 효율적으로 코드를 짜고싶고 최대한 짧은 줄로 코드를 짜고싶다보니
고민하다가 시간을 늘리고 코드는 늘어나버린것 같다..
중복 처리만 생각하고, 또 카운트에 대해 고민했다.
arr[i]와 arr[i+1]이 다를때만 array배열에 넣었기때문에 마지막에 if와 else로 처리를 해준다.
[1, 1, 3, 5, 5, 0]같은 조건도 나올 수 있다는 생각에 else까지 넣어서 처리해준 것 같다.
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
int count=0;
int[] answer = {};
int[] array = new int[arr.length];
// 중복 된 수를 담아줄 배열
for(int i=0; i<arr.length-1; i++){
if(arr[i]!=arr[i+1]){
// 전과 후를 비교해 중복이 되지않으면, 중복이 아닌 순서의 배열을 담아준다.
array[count]=arr[i];
count++;
}
}
if(arr[arr.length-2]==arr[arr.length-1])
// 혹시 마지막과 그 전에 중복이 될 경우에 담아준다.
array[count++]=arr[arr.length-1];
else
// 마지막과 그 전이 중복이 안 될 경우 담아준다.
array[count++]=arr[arr.length-1];
answer=Arrays.copyOfRange(array, 0, count);
// copyOfRange로 배열을 복사해준다. array~count
return answer;
}
}
쉬운문제만 골라서 푸는 것 같아서 좀 양심에 찔린다....ㅎㅎㅎ
'코딩테스트' 카테고리의 다른 글
[2020-11-10] 문자열 내 p와 y의 개수 (0) | 2020.11.10 |
---|---|
[2020-11-09] 문자열 내 마음대로 정렬하기 (0) | 2020.11.10 |
[2020-11-05] 나누어 떨어지는 숫자 배열 (0) | 2020.11.05 |
[2020-11-04] 2016년 (0) | 2020.11.04 |
[2020-11-03] 크레인 인형뽑기 게임 (0) | 2020.11.04 |