프로그래머스 코딩테스트 연습문제를 풀어보았다.
💡 문제
배열 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 | answer |
---|---|
[1,1,3,3,0,1,1] | [1,3,0,1] |
[4,4,4,3,3] | [4,3] |
🔗 나의 풀이
function solution(arr)
{
let answer = [];
for (i=0; i<=arr.length; i++) {
if (arr[i] !== arr[i+1]) {
answer.push(arr[i])
}
}
return answer;
}
for 문으로 arr의 길이만큼 순서대로 돌면서 그 다음 숫자랑 같은 숫자가 같지 않을 경우에 answer배열에 넣어주는 방식으로 접근해보았다.
(오랜만에 푸니까 감 다 떨어져서 힘들었다;; 꾸준히 풀어봐야지..)
function solution(arr)
{
return arr.filter((val,index) => val != arr[index+1]);
}
filter를 이렇게 사용할 수 있구나 싶었다...
❓ 자료구조 - 스택/큐
프로그래머스에서 코딩테스트 → 알고리즘 고득점 kit
에 들어가보면 자료구조로 분류해서 나눠놓은 문제들을 볼 수 있다.
사실 알고리즘을 풀면서도 자료구조라는 것에 대한 지식이 전혀 없이 풀어왔었다.
이번에 풀었던 문제의 유형이 스택/큐
이었기 때문에 자세하게는 아니지만 간단하게 스택/큐는 무엇인지에 대해 찾아보았다.
자료구조는 컴퓨터 과학에서 효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리, 저장을 의미한다. 더 정확히 말해, 자료 구조는 데이터 값의 모임, 또 데이터 간의 관계, 그리고 데이터에 적용할 수 있는 함수나 명령을 의미한다. 신중히 선택한 자료구조는 보다 효율적인 알고리즘을 사용할 수 있게 한다. (출처_위키백과)
스택/큐
스택(Stack)과 큐(Queue)는 자바스크립트에서 두 가지 중요한 자료구조로, 데이터를 저장하고 관리하는데 사용된다. 각각의 자료구조는 데이터를 저장하고 접근하는 방식이 다르며, 특정한 작업을 수행하기 위해 효율적으로 활용된다.