2019년 1월 9일 수요일

#2 알고리즘 연습 - 같은 숫자는 싫어 / JAVA


같은 숫자는 싫어


문제 설명
배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 배열 arr에서 제거 되고 남은 수들을 return 하는 solution 함수를 완성해 주세요. 단, 제거된 후 남은 수들을 반환할 때는 배열 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보다 작거나 같은 정수

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




나의 문제풀이 아이디어

이 문제에서는 같은 숫자들의 중복을 제거하는 것이 아닌 연속된 숫자들의 중복을 제거하기때문에 Set을 이용해서 풀어버리면 전체 중복이 제거되버리므로 원하는 답과 다른 값이 나오게 된다.

따라서 일단 연속적으로 나오는 원소들중 중복을 제거하여 1개만을 가지고,
이때 내가 기준을 반복문을 돌릴때 다음번의 원소랑 같지않으면 count하는 방식으로 했기때문에 array의 마지막 원소의 경우 비교대상이 NULL이어서 원하는 값이 안 나오게 된다.
따라서 array의 마지막 원소인지 check해서 마지막 원소는 따로 count해주도록 하자




<문제 풀이 코드>

나의 코드
다른 해법


출처 : 프로그래머스(https://programmers.co.kr)

댓글 없음:

댓글 쓰기

가장 많이 본 글