반응형

 

프로그래머스 코딩테스트 같은숫자는싫어 링크 : 여기를 눌러주세요.

 

프로그래머스에 있는 코딩테스트 같은숫자는싫어 라는 제목의 문제입니다.

 

 

 

 

프로그래머스 코딩테스트 JAVA 레벨 1에 있는 ‘같은숫자는싫어’ 문제입니다.

 

 

 

코딩테스트 같은숫자는싫어 어떻게 풀지 생각해보기

 

배열을받아서 같은숫자들을 제거한 뒤 남은 숫자를 리턴해주는 문제입니다.

 

일단 반복문을 돌려 배열의 index값과 그 다음 index값을 비교한 뒤,

 

같으면 넘어가고 다른숫자면 리턴해주는 배열에 넣어주고,

 

마지막 index에서는 비교할 값이 없기때문에 리턴해주는 배열에 넣어줄 수 없어

 

강제로 넣어줘야겠다고 생각했습니다.

 

하지만 마지막 인덱스값에서 다음 숫자가 없기때문에 에러가 뜹니다...

 

네... 반복문의 에러에 빠져들었었습니다 ㅠㅠ...

 

(제가 많이 부족해서... 나중에 정답을 확인해보니 for in문처럼 쓰는 방법도 있더라구요)

 

그래서 생각한게 맨 뒤에서부터 비교하는 방법이였습니다.

 

예를들면 )

 

 

 

이렇게 거꾸로 반복문을 돌리는 것 이였습니다.

 

아래는 정답이 공개되어 있으니 혼자 풀어보고싶으신 분들은

 

지금부터 해결해 보시면 될 것같습니다.

 

 

 

코딩테스트 통과한 소스보기

 

 

 

 

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
public class Solution {
    public static int[] solution(int[] arr) {
        
        List<Integer> preAns = new ArrayList<>();
        for(int i=arr.length-1; i>=0; i--) {
            System.out.println(i);
            if( i == 0) {
                preAns.add(arr[i]);
                break;
            }
            if(arr[i] != arr[i-1]) {
                preAns.add(arr[i]);
            }
        }
        System.out.println(preAns);
        int[] answer = new int[preAns.size()];
        int j=0;
        for(int i=preAns.size()-1; i>=0; i--) {
            answer[j] = preAns.get(i);
            j++;
        }
        return answer;
    }
}
 

뭔가 List안에 넣은뒤 다시 역순으로 answer 배열에 넣어주는게 뭔가 찝찝하긴 하지만...

 

이 방법외에 다른방법이 있다면 알려주세요 ..ㅠ ㅠ

 

모든 코드에는 정답이 없으며 저 또한 코드를 잘 짜는게 아니기 때문에

 

제 코드는 참고용으로만 사용해주시면 감사하겠습니다.

 

최대한 매일매일 1개의 코딩테스트 문제를 풀려고 노력중입니다.

 

아직 많이 부족해서 포스팅이 늦을 수 있으니 양해 부탁드립니다.

 

조언이나 가르침은 항상 기쁜마음으로 받겠습니다.

 

감사합니다 (_ _)

반응형

+ Recent posts