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

Bluewave·2024년 8월 13일

코테공부_java

목록 보기
51/99
post-thumbnail

문제

🎃 문제 바로가기

문제레벨정답률
짝지어 제거하기Lv.273%

My Code

import java.util.*;

class Solution
{
    public int solution(String s)
    {
        Stack<Character> stack = new Stack<>();
        for(char c : s.toCharArray()){
            if(stack.isEmpty() || stack.peek() != c){
                stack.push(c);
            }else{
                stack.pop();
            }
        }
        
        if(stack.isEmpty()){
            return 1;
        }else{
            return 0;
        }
    }
}
  1. 스택 선언 후 s 문자열 길이만큼 for문 돌기
  2. 스택이 비어있는 상태이거나, 가장 최근 저장 값이 c와 동일하지 않으면 스택에 추가
  3. 그게 아니라면 pop해서 저장된 값 삭제
  4. 최종적으로 스택이 비어있으면 1, 아니면 0 리턴

최적화 코드

import java.util.Stack;

class Solution {
    public int solution(String s) {
        Stack<Character> stack = new Stack<>();
        
        for (char c : s.toCharArray()) {
            // 스택이 비어있거나 현재 문자와 스택의 상단 문자가 다르면 스택에 추가
            if (stack.isEmpty() || stack.peek() != c) {
                stack.push(c);
            } else {
                // 현재 문자와 스택의 상단 문자가 같으면 제거
                stack.pop();
            }
        }
        
        // 스택이 비어있으면 문자열의 모든 문자가 제거된 것
        return stack.isEmpty() ? 1 : 0;
    }
}

크게 달라진 건 없고, 마지막에 if else문을 삼항으로 변경함
삼항 연산자를 사실 평소에 잘 안쓰게 되는데 사용하면 가독성이 높아지니 적극 사용하려 노력해보겠숩니당,,

profile
Developer's Logbook

0개의 댓글