728x90
https://programmers.co.kr/learn/courses/30/lessons/12906
코딩테스트 연습 - 같은 숫자는 싫어
배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은
programmers.co.kr
접근
기본적으로 스택을 활용하였다. 숫자들을 탐색하면서 현재 숫자와 스택의 top을 비교한다.
만약 stack의 top과 현재 숫자가 다를 때는 숫자를 스택에 추가하고 같을 때는 추가하지 않는다.
최종적으로 stack을 반환한다.
구현
- filter라는 함수를 만들었고 빈 배열과 arr을 넘긴다.
- 빈 배열은 스택으로 활용된다.
function solution(arr) {
let answer = [];
answer = filter([], arr);
return answer;
}
- 전달받은 숫자들을 탐색하고
- 스택이 비어있을 때 스택에 현재 숫자를 추가하고
- 스택이 비어있지 않을 때는
- 스택의 top과 현재 숫자를 비교하여 같을 때는 continue
- 다를 때는 stack에 push 한다.
function filter(stack, numbers) {
for (let number of numbers) {
if (isEmpty(stack)) stack.push(number);
else {
if (isEqual(stack, number)) continue;
stack.push(number);
}
}
return stack;
}
전체 코드
function filter(stack, numbers) {
for (let number of numbers) {
if (isEmpty(stack)) stack.push(number);
else {
if (isEqual(stack, number)) continue;
stack.push(number);
}
}
return stack;
}
function isEmpty(list) {
if (list.length === 0) return true;
return false;
}
function isEqual(list, b) {
return list[list.length-1] === b;
}
function solution(arr) {
let answer = [];
answer = filter([], arr);
return answer;
}
'프로그래밍 > 함수형 프로그래밍' 카테고리의 다른 글
[함수형 프로그래밍 연습하기] 프로그래머스 Level1 - 핸드폰 번호 가리기 (0) | 2021.08.06 |
---|---|
[함수형 프로그래밍 연습하기] 프로그래머스 Level1 - 평균 구하기 (0) | 2021.08.06 |
함수형 프로그래밍의 특징 (1) (0) | 2021.08.05 |
[함수형 프로그래밍 연습하기] 프로그래머스 Level1 - 가운데 글자 가져오기 (0) | 2021.08.05 |
[함수형 프로그래밍 연습하기] 프로그래머스 Level1 - 약수의 개수와 덧셈 (0) | 2021.08.05 |