[프로그래머스] 짝지어 제거하기

프린이·2022년 6월 23일
0


  • 제 코드는 최선의 방안은 아닙니다.
  • 단순히 기록용, 공유용이니 참고바랍니다.

🔗 문제 링크

https://programmers.co.kr/learn/courses/30/lessons/12973

❌ 실패한 코드 (시간초과, 효율성X)

function solution(s)
{
    var answer = -1;
    var arr = s.split("");
    var tmpArr = []
    
    for(var i = 0; i < arr.length; i++){
        if(arr[i] == arr[i+1]){
            arr.splice(i, 1);
            arr.splice(i, 1);
            i = -1;
        }
    }
    
    arr.length == 0 ? answer = 1 : answer = 0;
    return answer;
}

✔ 내가 생각한 방법

  1. s 모든 글자를 쪼개어 arr변수에 배열 저장
  2. for문을 arr크기만큼 돌린다.
    -> i가 0일 땐, tmpArr 배열에 push
    -> i가 1이상일 땐,
    해당 글자가 tmpArr 마지막 글자와 같으면 tmpArr.pop()
    해당 글자가 tmpArr 마지막 글자와 다르면 tmpArr에 현재 값 push()
  3. for문이 끝나고 tmpArr 길이가 0보다 크면 answer 0
    for문이 끝나고 tmpArr 길이가 0이면 answer 1
  4. answer값 return

📝 제출 코드

function solution(s)
{
    var answer = -1;
    var arr = s.split("");
    var tmpArr = [];
    
    for(var i = 0; i < arr.length; i++){
        if(i > 0){
            if(tmpArr[tmpArr.length - 1] == arr[i]){
                tmpArr.pop();
            }
            else{
                tmpArr.push(arr[i]);
            }
        }
        else{
            tmpArr.push(arr[i]);
        }
    }
    
    tmpArr.length == 0 ? answer = 1 : answer = 0;
    return answer;
}

짝지어서 하는 문제들을 여러번 풀어본 결과 배열과 pop push로 풀어야 가장 간단하고 효율성에도 문제가 발생하지않는다.

profile
주니어 프론트엔드개발자

0개의 댓글