본문 바로가기

알고리즘

Programmers_같은숫자는싫어_Level1

최근 Programmers 사이트를 이용하고 있다.

백준은 연습문제 느낌이라면 Programmers는 모의고사 같은 느낌이다.

 


문제 : 같은 숫자는 싫어

문제 설명

배열 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보다 작거나 같은 정수

 

입출력 예
[1,1,3,3,0,1,1] [1,3,0,1]
[4,4,4,3,3] [4,3]

그리 어렵지 않게 풀었다.

코드가 긴 느낌이지만 .. ㅎ

예시처럼 출력 하면 해결할 수 있는 문제다.

 

1. 입력원소가 하나라면 그대로 출력

2. i번째 원소와 i+1~n 번까지의 원소를 비교 => 다른 숫자일 경우 List에 추가 

3. 원소를 끝까지 비교하는 경우 => n-1원소와 n의 원소가 다른 경우 : 둘 다 추가 , 같은 경우 : 하나만 추가

 

라는 시나리오를 짜고 코드를 짰다.

import java.util.ArrayList;

public class Programmers_같은숫자는싫어 {
    public static void main(String[] args) {
        int[] arr = {0, 0, 0, 0, 0, 0};

        solution(arr);
    }

    private static void solution(int[] arr) {
        ArrayList<Integer> arrList = new ArrayList<>();

        for (int i = 0; i < arr.length; i++) {
            if (arr.length == 1) {
                arrList.add(arr[0]);
            }
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[i] != arr[j]) {
                    arrList.add(arr[i]);
                    i = j - 1;
                    if (j == arr.length - 1) {
                        arrList.add(arr[j]);
                    }
                    break;
                }
                if (j == arr.length - 1) {
                    arrList.add(arr[j]);
                }
                break;
            }
        }
        System.out.println(arrList);
    }
}

그리고 Programmers 는 정답 기준이 백준보다 더 높은 것 같다.

100점! 오랜만에 보는 100점이다 !

 

한동안 블로그를 쓸 여력이 없었지만 이제는 다시 시작!!

'알고리즘' 카테고리의 다른 글

1260_JAVA_DFS와 BFS  (3) 2022.09.29
Programmers_로또의 최고순위와 최저순위_Level1  (2) 2022.08.19
2231_JAVA_분해합  (0) 2022.07.29
2798_JAVA_블랙잭  (2) 2022.07.28
1193_JAVA_분수찾기  (0) 2022.07.27