반응형
1. 올바른 괄호
설명
괄호가 입력되면 올바른 괄호이면 “YES", 올바르지 않으면 ”NO"를 출력합니다.
(())() 이것은 괄호의 쌍이 올바르게 위치하는 거지만, (()()))은 올바른 괄호가 아니다.
입력
첫 번째 줄에 괄호 문자열이 입력됩니다. 문자열의 최대 길이는 30이다.
출력
첫 번째 줄에 YES, NO를 출력한다.
예시 입력 1
(()(()))(()
예시 출력 1
NO
접근 방법
스택이 무엇인지 알고, 간단한 메소드만 사용하면 끝이다.
스택이란, 한쪽 끝에서만 데이터를 넣고 다른 한쪽에서는 데이터를 출력할 수 있도록 만든 자료구조.
흔히 후입선출이라고 부르는 LIFO(Last In, First Out) 구조이다.
import java.util.*;
class Main{
public String solution(String str) {
String answer = "YES";
Stack<Character> stack = new Stack<>();
for(char x : str.toCharArray()) {
if(x=='(') stack.push(x);
else {
if(stack.isEmpty()) return "NO";
stack.pop();
}
}
if(!stack.isEmpty()) return "NO";
return answer;
}
public static void main(String args[]) {
Main T = new Main();
Scanner sc = new Scanner(System.in);
String b = sc.nextLine();
System.out.println(T.solution(b));
}
}
이 글의 문제는 인프런 강의에서 참고하였습니다.
반응형
'프로그래밍 > 알고리즘' 카테고리의 다른 글
[알고리즘 - 인프런] 공주구하기 - Queue 기본문제 (1) | 2024.02.06 |
---|---|
[알고리즘 - 프로그래머스, 인프런] 2019 카카오 겨울 개발자 인턴십 코딩테스트 문제 - 크레인 인형뽑기(카카오) (1) | 2024.02.06 |
[알고리즘 - 인프런] 최대 길이 연속부분수열 (1) | 2024.02.03 |
[ArrayList를 Array로 형 변환] - 코딩테스트 출력값이 안 맞을 때 (0) | 2024.02.03 |
[for each 문] - 알고리즘 공부하다 알게 된 신기한 것 (0) | 2024.02.01 |