[JAVA/프로그래머스] 스택/큐_쇠막대기

👀 문제

https://programmers.co.kr/learn/courses/30/lessons/42585

👊 첫 번째 도전

1. 설계

  1. ()을 사용하는 문제이므로 스택을 이용한다.
  2. (은 스택에 넣는다.
  3. )인 경우 앞이 (라면 레이저이다.
  4. ))이라면 닫는 괄호이다.

i) ()인 경우. 설명1 이 경우는 레이저이다. 위와 같이 ()를 제외한 여는 괄호 갯수 만큼 막대기가 생긴다.

ii) ))인 경우. 설명1 쇠막대기의 끝을 나타낸다. 이 경우는 항상 1이다. 끝난 쇠막대기는 하나밖에 없기 때문이다.

2. 구현

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.util.Stack;
/**
 *
 * @author HEESOO
 *
 */
class Solution {
    public int solution(String arrangement) {
        int answer = 0;
        Stack<Character> st=new Stack<Character>();
        char ch;
        for(int i=0;i<arrangement.length();i++){
            ch=arrangement.charAt(i);
            if(ch=='('){
                st.push(ch);
            }
            else if(!st.isEmpty()&&ch==')'){
                st.pop();
                if(arrangement.charAt(i-1)=='('){
                    answer+=st.size();
                }  
                else{
                    answer++;
                }
            }
        }
        return answer;
    }
}
  • Stack st: arrangement를 char형태로 하나씩 넣는다. 경험상 괄호 문제는 스택으로 푸는 경우가 대부분이다.
  • char ch: String형태의 arrangement를 문자 하나씩 받아와 코드를 진행한다.

3. 결과

실행결과 🤟 성공 🤟

👏 해결 완료!

처음 문제를 접했을 때는 그림이 복잡해보여서 어려울 것이라고 생각했는데, 이해만 하면 간단한 문제였다. 앞으로는 자신감을 갖고 문제를 풀어야겠다!