[Programmers] 스택/큐 - 같은 숫자는 싫어

현우·2022년 8월 12일
0

CodingTest

목록 보기
7/9

1. 나의 풀이

  1. arr를 인덱스 i와 i+1을 비교해서 다르면 i를 큐에 삽입한다.
  2. 맨 마지막에 [~~~, 3,3] 같이 된다면 무시 될 것이기 때문에 마지막 두 개가 같다면 하나를 더 넣어준다.
  3. 큐에서 하나 씩 꺼내서 intger 배열에 삽입해준다..

2-1. 풀이

1번 풀이
import java.util.*;

public class Solution {
    public int[] solution(int []arr) {
        Queue<Integer> queue = new LinkedList<Integer>();

        for(int i=0; i < arr.length-1; i++){
            if(arr[i] != arr[i+1]){
                queue.add(arr[i]);
            }
            if(i+1 == arr.length-1){
                queue.add(arr[i+1]);
            }
        }

        int[] answer = new int[queue.size()];
        int temp = 0;
        while(!queue.isEmpty()){
            answer[temp] = queue.poll();
            temp++;
        }
        return answer;
    }
}

통과


2번 풀이
import java.util.*;

public class Solution {
    public int[] solution(int []arr) {
        Queue<Integer> queue = new LinkedList<Integer>();
        int temp = 10;
        for(int i=0; i < arr.length; i++){
            if(temp != arr[i]){
                temp = arr[i];
                queue.add(arr[i]);
            }
        }
        
        int[] answer = new int[queue.size()];
        temp = 0;
        while(!queue.isEmpty()){
            answer[temp] = queue.poll();
            temp++;
        }
        return answer;
    }
}

다른 사람의 코드를 보니 수가 0~9 사이라는 것을 이용해서 임시로 10을 넣고 인덱스 0에서부터 비교하고 다르면 임시변수와 큐에 넣어서 저장하는 그런 방법도 있었다.

효율성도 큰 차이는 없었지만 문제를 이용하는 그런건 좋은 것 같다


3. 메서드

Queue.poll() 큐를 pull한다.
Queue.isEmpty() 큐가 비어있는지 확인한다.

0개의 댓글