[프로그래머스 코딩테스트 연습문제] 괄호 회전하기 문제 풀이 with 자바스크립트(Javascript) & 자바(Java)

Re_Go·2024년 7월 8일
0

코딩테스트연습

목록 보기
96/106
post-thumbnail

1. 첫번째 문제 풀이(2024-07-08)

해당 문제는 저번 주에 풀었던 스택 문제의 기본기라고도 할 수 있는데요! 이번 문제는 스택의 기본기라고도 생각해서 좀 더 심혈을 기울여 알고리즘 설명 그림을 제작해 보았습니다.

  1. 짝이 맞는 경우

(자료 출처 : 미리캔버스로 제작했습니다.)

  1. 짝이 맞지 않는 경우

다음은 해당 문제를 JS 버전으로 푼 문제입니다.

  1. 자바스크립트 버전
function solution(s){
   
   let stack = [];
   let arr = s.split("");
 
   for (let char of arr) {
        if (stack.length > 0 && stack[stack.length - 1] === char) {
            stack.pop(); 
        } else {
            stack.push(char); 
        }
    }
    return stack.length === 0 ? 1 : 0;
}

그리고 자바 버전으로 구현한 코드는 다음과 같습니다.

  1. 자바 버전
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.pop();
            } else {
                stack.push(c);
            }
        }

        return stack.isEmpty() ? 1 : 0;
    }
}

2. 자바와 자바스크립트 풀이 차이점

  1. 이전 문제에서도 언급 드렸지만 자바의 경우 Stack 클래스는 스택 알고리즘을 푸는데 유용한 메서드를 제공하고 있는데요. 여기서는 peek(배열의 맨 뒤, 그러니까 LIFO 구조에서 맨 위의 요소) 메서드를 이용해 배열의 맨 뒷줄, 즉 꺼낼 수 있는 상위 요소를 확인할 수 있었습니다.
profile
인생은 본인의 삶을 곱씹어보는 R과 타인의 삶을 배워 나아가는 L의 연속이다.

0개의 댓글