반응형

 

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

 

 

 

** Javascript

 

 

function solution(arr)
{
    return arr.filter((item, index) => arr[index] !== arr[index + 1]);
}

 

 

굳이 arr[index] 쓸 필요가 없었는데 왜 썼지..

 

 

function solution(arr)
{
    return arr.filter((item, index) => item !== arr[index + 1]);
}

 

 

 

 

** Java

 

java는 효율성 테스트 때문에 추천 풀이 오픈...!

 

import java.util.*;
public class Solution {
    public int[] solution(int []arr) {
        List<Integer> list = new ArrayList<Integer>();
        int top = 10;
        for (int i : arr) {
            if (i != top) {
                list.add(i);
                top = i;
            }
        }
        int[] answer = new int[list.size()];
        for(int i=0; i<answer.length; i++) {
            answer[i] = list.get(i).intValue();
        }
        return answer;
    }
}

 

array 의 경우 사이즈를 정해서 선언해야 하므로 (고정된 수의 요소를 보유하는 컨테이너 객체임) 변동성이 있을 경우 List 나 ArrayList를 먼저 이용하는 것이 좋다.

 

index out of range 에러가 나는 것을 피하려면 swap 을 이용하면 된다.

 

 

 

 

** Python

 

def solution(arr):
    answer = []
    top = 10
    for i in arr:
        if i != top:
            answer.append(i)
            top = i
    return answer

 

 

가장 많이 추천을 받은 풀이는 다음과 같다.

 

def solution(arr):
    a = []
    for i in arr:
        if a[-1:] == [i]: continue
        a.append(i)
    return a

 

 

댓글 설명에 따르면

 

a[-1:]은 a값의 가장 뒤의 값을 list로 만든거라, list가 아닌 i랑 list인 a[-1:]값이랑 같은지 물어보면 당연히 다르다고 나오기 때문입니다.
반응형

+ Recent posts