programmers

[코딩테스트] - 짝지어 제거하기 LV2 ( 프로그래머스(programmers) / java )👍

나홀로전세집 2024. 4. 11. 22:56
728x90
반응형

안녕하세요 나홀로전세집입니다.

위풍당당 스폰지밥

 

오늘은 레벨2 짝지어 제거하기 풀어보겠습니다.

 

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

 

프로그래머스

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

programmers.co.kr

 

다음은 문제 설명입니다.

 

문자열에서 겹치는 알파벳을 없애 다 없어지면 1을 리턴 다 없어지지 않으면 0을 리턴해야하는 문제입니다.

 

알고리즘을 설명드리겠습니다.

 

배열을 스택처럼 사용해 스택의 top과 현재 체크값을 비교하여 스택을 지우는 알고리즘을 사용할 것 입니다.

다음은 알고리즘을 그림으로 표현한 것 입니다.

 

 

 

다음은 문제풀이 코드입니다.

class Solution {
    public int solution(String s) {
        char[] stack = new char[s.length()]; // 스택을 사용한 알고리즘 풀이
        int top = 0; // 스택의 최상단을 체크할 변수
        stack[0] = s.charAt(0); // 반복문 전 스택을 하나 채우기
        for (int i = 1; i < s.length(); i++) { // 문자열 반복문
            if (top >= 0 && stack[top] == s.charAt(i)) { // 스택이 안비어있고 문자가 같을 때
                top--; // 스택 제가
            } else { // 아니면 스택에 채우기
                stack[++top] = s.charAt(i);
            }
        }
        if(top == -1){ // 스택이 비어있으면 1 리턴
            return 1;
        } else { // 스택이 차있으면 0 리턴
            return 0;
        }
    }
}

 

오랜만에 자료구조를 사용해서 문제를 풀어보았습니다. 직접 스택을 사용하지는 않았지만 배열을 사용해 스택을 구현하여 재밌던 코드였습니다.

 

오늘도 즐코딩 하시고 좋은 하루 되세요~

 

 

728x90
반응형