코딩테스트/프로그래머스

[Java] 프로그래머스 - 짝지어 제거하기 (2단계)

배똥회장 2022. 4. 26. 13:08
728x90
코딩 테스트 풀이 체크리스트
2시간 내에 풀었는가? O
본인의 실력으로 풀었는가? O

 

 

코딩테스트 연습 - 짝지어 제거하기

짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙

programmers.co.kr

 

 

 

 

 

import java.util.*;

class Solution {
    public int solution(String s) {
        char[] word = s.toCharArray();
        Stack<Character> box = new Stack<>();
        
        for (int i = 0; i < word.length; i++) {
            char temp = (!box.isEmpty()) ? box.peek() : ' ';
            if (temp == word[i]) {
                box.pop();
            } else {
                box.push(word[i]);
            }
        }
        
        return (!box.isEmpty()) ? 0 : 1;
    }
}

 

정확성 테스트
테스트 1 통과 (0.18ms, 71.2MB)
테스트 2 통과 (11.53ms, 72.4MB)
테스트 3 통과 (14.57ms, 88.5MB)
테스트 4 통과 (16.23ms, 80.2MB)
테스트 5 통과 (17.90ms, 98.1MB)
테스트 6 통과 (14.90ms, 76.5MB)
테스트 7 통과 (13.61ms, 80.2MB)
테스트 8 통과 (13.85ms, 80.4MB)
테스트 9 통과 (0.20ms, 76.9MB)
테스트 10 통과 (0.39ms, 76.9MB)
테스트 11 통과 (0.17ms, 73.3MB)
테스트 12 통과 (0.18ms, 76.6MB)
테스트 13 통과 (0.18ms, 74.5MB)
 
효율성 테스트
테스트 1 통과 (65.74ms, 63.2MB)
테스트 2 통과 (49.36ms, 58.2MB)
테스트 3 통과 (54.24ms, 60.9MB)
테스트 4 통과 (53.64ms, 60.9MB)
테스트 5 통과 (55.08ms, 60.6MB)
테스트 6 통과 (54.41ms, 61MB)
테스트 7 통과 (54.21ms, 60.3MB)
테스트 8 통과 (53.56ms, 60.6MB)

 

 

 

 

 

스택에 한 글자씩 넣으면서 제일 위에 있는 글자와 넣을 단어가 동일하면

넣을 글자는 넣지 않고 넘어가고, 제일 위에 있는 글자는 꺼내서 없앤다.

그렇게 단어를 다 돌 때까지 반복한 후에 마지막에 만약에 스택이 비어있다면 1을 리턴하고 비어있지 않으면 0을 리턴

 

 

 

 

 

728x90