티스토리 뷰
[ 프로그래머스 ] 같은 숫자는 싫어 ( 자바 )
배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다.
ex) arr = [1, 1, 3, 3, 0, 1, 1] -> [1, 3, 0, 1] 리턴
https://programmers.co.kr/learn/courses/30/lessons/12906
코딩테스트 연습 - 같은 숫자는 싫어 | 프로그래머스
배열 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] 을 retur
programmers.co.kr
구조 1
pre = 인풋으로 나올 수 없는 정수
for( cur: 모든 arr 값 )
pre 와 cur가 다르면? cur를 ans에 추가
pre = cur
구조 2
pre = arr[0]
for ( cur: 첫 번째를 제외한 모든 값 )
pre와 cur가 다르면 -> pre를 ans에 추가
pre = cur
if ans가 비었거나, ans의 마지막 값과 arr마지막이 다르면 -> ans에 arr마지막 추가
핵심
연속 중복을 제거
- 현재 값 cur와 중복 처리해야 하는 cur 이전 값 pre를 사용.
- cur와 pre가 달라질 때, cur 또는 pre 중 하나를 기준으로 중복 처리한다.
- cur 기준 시, pre는 인풋으로 절대 나올 수 없는 값으로 초기화.
- pre 기준 시, 인풋의 마지막 (연속) 값을 루프 끝나고 처리해야 한다.
루프 끝나고 따로 처리해줘야 한다. 단, 모두 한 가지 숫자인 경우를 고려 안 하면 틀림.
cur기준이 깔끔하고 좋지만, 어쩔 수 없이 pre기준을 해야 할 때가 있다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
ArrayList<Integer> list = new ArrayList<Integer>();
int pre = -1, cur;
for(int i = 0 ; i < arr.length ; i++) {
cur = arr[i];
if(pre != cur) {
list.add(cur);
}
pre = cur;
}
int[] ans = new int[list.size()];
for(int i = 0 ; i < list.size() ; i++) {
ans[i] = list.get(i);
}
return ans;
}
}
|
cs |
'CS > 알고리즘 풀이' 카테고리의 다른 글
[ 프로그래머스 ] 자연수 뒤집어 배열로 만들기 ( java ) (0) | 2019.12.06 |
---|---|
[ 프로그래머스- 2018 카카오 공채 ] 비밀지도 (java) (2) | 2019.12.06 |
[ 프로그래머스 ] 문자열 내 마음대로 정렬하기 ( java ) (1) | 2019.12.04 |
[ 백준 17837 ] 새로운 게임 2 (java) (0) | 2019.12.01 |
[ 프로그래머스 ] 체육복 ( java ) (0) | 2019.11.26 |
- Total
- Today
- Yesterday
- 17779
- programmers
- 3954
- 큰 수 만들기
- 124 나라의 숫자
- 오블완
- 2019 카카오 공채
- 가장 큰 정사각형 찾기
- 2018 카카오 공채
- 정수 내림차순으로 배치하기
- Brainf**k 인터프리터
- 괄호 변환
- 프로그래머스
- 주사위 윷놀이
- 백준
- 티스토리챌린지
- 게리맨더링 2
- 후보키
- DP
- 라면공장
- 문자열을 정수로 바꾸기
- 짝지어 제거하기
- 카카오2020 공채
- 자바
- java
- 17825
- 단체사진 찍기
- 카카오 2020 공채
- 투포인터
- 찾아라 프로그래밍 마에스터
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |