1학년? 2학년?때 스택 배우면서 배웠던 문제중 하나이다!
그때는 c언어로 했지만 오늘은 자바로 풀어보겠다~
자바에서 스택을 쓴지 좀 오래되서 메소드 쓰는법이 잘 기억이 안나서 다시 공부해서 풀었다 ㅋㅋ
java 스택 사용방법
선언 방법
import java.util.Stack; //import
Stack<Integer> stack = new Stack<>(); //int형 스택 선언
삽입 방법
Stack<Integer> stack = new Stack<>(); //int형 스택 선언
stack.push(1); // stack에 값 1 추가
삭제 방법
Stack<Integer> stack = new Stack<>(); //int형 스택 선언
stack.push(1); // stack에 값 1 추가
stack.push(1); // stack에 값 1 추가
stack.pop(); // stack에 값 삭제
stack.clear(); // stack 값 전체 삭제
최상단값 가져오기
Stack<Integer> stack = new Stack<>(); //int형 스택 선언
stack.push(1); // stack에 값 1 추가
stack.peek(); // stack의 최상단 값 출력
https://school.programmers.co.kr/learn/courses/30/lessons/12909
문제 설명
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
"()()" 또는 "(())()" 는 올바른 괄호입니다.
")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.
제한사항
문자열 s의 길이 : 100,000 이하의 자연수
문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
풀이
s를 하나하나 읽으면서 (면 푸쉬를 )면 팝을 하면된다.
그리고 (와 )의 개수가 같아야 하기 때문에 마지막에 stack.isEmpty()를 해서 스택이 비어 있는지 확인해야 한다.
코드
import java.util.*;
class Solution {
boolean solution(String s) {
boolean answer = true;
Stack<Character> stack = new Stack<>();
for (int i = 0; i < s.length(); i++){
if(s.charAt(i) == '('){
stack.push('(');
}
else if(s.charAt(i) == ')' && !stack.isEmpty()){
stack.pop();
}
else{
return false;
}
}
return stack.isEmpty();
}
}
'코딩테스트' 카테고리의 다른 글
[스택] 프로그래머스 같은 숫자는 싫어 자바 java (0) | 2023.04.24 |
---|---|
[스택] 프로그래머스 주식 가격 (0) | 2023.04.24 |
[그래프] 프로그래머스 순위 자바 (Java) (0) | 2023.04.10 |
[그래프] 프로그래머스 가장 먼 노드 자바 (Java) (0) | 2023.04.10 |
[동적 프로그래밍] 프로그래머스 등굣길 자바 (Java) (0) | 2023.04.03 |
댓글