본문 바로가기
코딩테스트/프로그래머스

코딩테스트 스택(stack) 문제 - 같은 숫자는 싫어 해결 과정

by 코드스니펫 2024. 3. 14.
반응형

코딩테스트 스택(stack) 문제 - 같은 숫자는 싫어 해결 과정

 

programmers logo

 

우리는 일상 생활 속에서도 불필요한 중복을 피하려는 경향이 있습니다. 이는 프로그래밍에서도 마찬가지로, 특히 배열과 같은 데이터 구조를 다룰 때 연속적인 중복을 제거하는 것은 메모리 효율성과 처리 속도를 높이는 데 중요합니다.

 

"같은 숫자는 싫어" 문제는 이러한 중복 제거의 기본 원리를 이해하고, 실제로 적용해볼 수 있는 좋은 예시를 제공합니다. 이번 글에서는 문제 해결 과정을 통해 배열을 효율적으로 다루는 방법을 배우고, 이를 다양한 프로그래밍 상황에 적용하는 방법에 대해 알아보겠습니다.

 

코딩테스트 스택 문제 - 같은 숫자는 싫어

 

▼ 직접 풀어보고 오세요 ▼

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 소개

주어진 배열에서 연속적으로 나타나는 숫자를 제거하고, 그 결과를 반환하는 문제입니다. 배열의 원소는 0부터 9까지의 숫자로 이루어져 있으며, 연속적인 중복만을 제거한 후 남은 숫자들을 원래 순서대로 배열에 담아 반환해야 합니다.

 

 

필자의 해결방법

function solution(arr) {
    let answer = [];

    for(x of arr) {
        if(answer[answer.length-1] !== x) answer.push(x);
    }

    return answer;
}

 

이 코드는 입력 배열 arr을 순회하면서, 현재 숫자가 answer 배열의 마지막 요소와 다를 경우에만 answer 배열에 추가하는 방식으로 중복을 제거합니다. 이 로직은 연속적인 중복만을 탐지하고 제거하기 위해 설계되었습니다.

 

 

개선할 수 있는 풀이 방법

위의 해결책은 이미 효율적이지만, JavaScript의 고차 함수를 사용하여 더 간결하게 표현할 수 있습니다. 예를 들어, reduce 메서드를 사용하여 같은 기능을 구현할 수 있습니다.

 

function solution(arr) {
    return arr.reduce((acc, cur) => {
        if(acc[acc.length-1] !== cur) acc.push(cur);
        return acc;
    }, []);
}

 

reduce 메서드는 배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환합니다. 여기서는 누적값 acc에 현재값 cur이 마지막 요소와 다를 때만 추가하는 방식으로 중복을 제거합니다. 이 방식은 초기값으로 빈 배열을 제공하고, 최종적으로 중복이 제거된 배열을 반환합니다.

 


 

끝으로

"같은 숫자는 싫어" 문제를 해결하면서 배열 내 연속적인 중복을 제거하는 방법을 배웠습니다. 이러한 문제 해결 기법은 데이터 처리의 효율성을 높이는 데 중요하며, 실제 개발에서도 유용하게 적용될 수 있습니다.

 

제시된 해결책과 개선 방법 모두 자신의 프로젝트에 적합한 방법을 선택하여 사용할 수 있습니다. 프로그래밍 실력 향상을 위해 다양한 문제에 도전하고, 여러 해결 방법을 시도해보는 것이 중요합니다. 이 과정을 통해 얻은 지식이 여러분의 개발 능력 향상에 도움이 되길 바랍니다.

 

▼ 아래 문제도 풀어보세요! ▼

 

 

코딩테스트 해시(hash) 문제 - 폰켓몬 풀이 과정 및 리팩토링

코딩테스트 해시(hash) 문제 - 폰켓몬 해결 방법 및 리팩토링 알고리즘 문제 해결은 프로그래밍 역량을 키우는 데 있어 필수적인 과정입니다. 특히, 다양한 데이터를 효율적으로 관리하고 처리해

lemonlog.tistory.com

 

 

코딩테스트 해시(hash) 문제 - 완주하지 못한 선수 문제 원리 및 풀이

코딩테스트 해시(hash) 문제 - 완주하지 못한 선수 문제 원리 및 풀이 마라톤 경기는 참가자 모두에게 도전의 장입니다. 하지만, 모든 참가자가 완주하는 것은 아닙니다. 프로그래밍 문제로 치면,

lemonlog.tistory.com