[코테/JAVA] 연습문제 : 같은 숫자는 싫어

2021. 11. 14. 18:11
728x90

2021.11.14

69번째 포스팅

 

입사 252일차.

코테 문제풀이 6주차 1번 문제

 

 

0. 문제

  ① 연습문제 : 같은 숫자는 싫어

  ② 설명

문제설명
배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면,

  • arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다.
  • arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다.
배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요.
제한사항
  • 배열 arr의 크기 : 1,000,000 이하의 자연수
  • 배열 arr의 원소의 크기 : 0보다 크거나 같고 9보다 작거나 같은 정수

  ③ 링크

 

코딩테스트 연습 - 같은 숫자는 싫어

배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은

programmers.co.kr

 

 

1. 접근방법

  생각해낸 방법은 2가지

  ① 배열을 담은 후, 같은 value를 가진 index를 삭제

  ② 큐를 모두 담은 후, fornt와 다음 value를 비교

 

 

2. 풀이

  ① 접근방법 :

  ② 풀이

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import java.util.*;
 
public class Solution {
    /*
    * 시작시간 : 17:48
    * 종료시간 : 18:03
    */
    
    public int[] solution(int[] arr) {
        int[] answer = solveCT(arr);
        
        return answer;
    }
    
    public int[] solveCT(int[] arr) {
        
        Queue<Integer> queue = new LinkedList<>();
        List<Integer> list = new ArrayList<>();
        
        // 1. 배열에 들어있는 모든 값들을 Queue에 쌓는다.
        for (int i = 0; i < arr.length; i++) {
            queue.offer(arr[i]);
        }
        
        // 2. front와 큐의 value들을 비교
        while (!queue.isEmpty()) {
            int front = queue.poll();
            
            if (queue.isEmpty()) {
                list.add(front);
                break;
            }
 
            // 3. front와 값이 다르면 정답 list에 add.
            if (front != queue.peek()) {
                list.add(front);
            }
        }
        
        int[] answer = new int[list.size()];
        for (int i = 0; i < list.size(); i++) {
            answer[i] = list.get(i);
        }
        
        return answer;
    }
}
cs

 

 

3. 결과

 

 

4. 주의사항

  ① 이중for문을 사용할 경우 효율성 테스트를 통과할 수 없다.

728x90

BELATED ARTICLES

more