[프로그래머스,Level 1] 같은 숫자는 싫어(JAVA 구현)
코테/프로그래머스(Programmers)

[프로그래머스,Level 1] 같은 숫자는 싫어(JAVA 구현)

반응형

- 첫 풀이 및 정답풀이

  이 문제의 핵심은 주어진 정수 배열에서 연속되는 숫자를 제외하고 1개씩만 순서를 유지한 채 출력해야 한다는 것이다. 즉, 주어진 배열을 탐색하면서 순서대로 새로운 배열에 삽입해 반환하면 된다.

 

  연속되는 정수를 구분하기 위해 boolean 배열을 이용해 방문 여부를 체크함과 동시에, 예제 1번과 같이 같은 숫자가 다시 등장할 수 있는 경우를 위해 이전에 탐색한 정수와 비교하는 코드가 필요했다.

 

import java.util.*;

public class Solution {
    // 1. ArrayList 반환형태로 변경.
    public ArrayList<Integer> solution(int []arr) {
        // 2. ArrayList 객체 생성.
        ArrayList<Integer> answer = new ArrayList<>();
        // 3. 연속여부를 판별할 boolean 배열 생성.
        boolean check[] = new boolean[10];
        // 4. 이전 정수와 비교를 위한 변수, 초기에는 첫 번째 정수로 초기화.
        int temp = arr[0];
        
        // 5. 주어진 배열을 탐색
        for(int i =0;i<arr.length;i++){
            // 5-1. 연속되는 숫자라면 넘어간다.
            if(check[arr[i]]) continue;
            // 5-2. 새로운 정수인 경우, 기존의 연속된 정수의 방문 여부를 변경 후 temp 값을 변경.
            if(temp != arr[i]){
                check[temp] = false;
                temp = arr[i];                
            }
            
            //6. 새로운 정수를 ArrayList에 삽입 후, 방문 표시.
            answer.add(arr[i]);
            check[arr[i]] = true;  

        }
            
        return answer;
    }
}
반응형