Algorithm/Programmers

[Lv.2] 짝지어 제거하기 : Java

say! 2025. 9. 26. 11:08
728x90

 

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

-정확성 테스트는 통과했지만 효율성 테스트는 실패한 코드

 

import java.io.*;
import java.util.*;

class Solution
{
    public int solution(String s) throws Exception
    {
        int answer = 1;
        
        // charAt으로 2개씩 같은지 확인하기
        while(s.length() > 0 && answer == 1){
            answer = 0;
            for(int i=0; i<s.length()-1; i++){  
                if(s.charAt(i) == s.charAt(i+1)){
                    answer = 1;
                    String r = s.substring(i, i+2);
                    // 같으면 replace ""로 제거하기
                    s= s.replace(r, "");
                    i = 0;
                }
            }
        }
        
                        
        // 길이가 0인지 확인하기
        
        System.out.println(answer);

        return answer;
    }
}

 

-정석 풀이 : Stack 이용하기

import java.io.*;
import java.util.*;

class Solution
{
    public int solution(String s) throws Exception
    {
        Stack<Character> stack = new Stack<>();
        
        for(char c: s.toCharArray()){
            if(!stack.isEmpty() && stack.peek() == c){
                stack.pop();
            }
            else stack.push(c);   
        }
        
        return stack.isEmpty() ? 1 : 0;
    }
}

'Algorithm > Programmers' 카테고리의 다른 글

[Lv.2] 문자열 압축 : Java  (0) 2025.09.26
[Lv.2] 다리를 지나는 트럭 : Java  (0) 2025.09.26
조이스틱 : Java  (1) 2025.07.05
[Lv.2] 기능개발 : Java  (3) 2025.07.05
완주하지 못한 사람 : Java  (0) 2025.07.05