1. 문제
괄호가 입력되면 올바른 괄호이면 “YES", 올바르지 않으면 ”NO"를 출력합니다.
(())() 이것은 괄호의 쌍이 올바르게 위치하는 거지만, (()()))은 올바른 괄호가 아니다.
2 - 1. 나의 풀이
stack이라는 강의 제목 힌트를 보고 쉽게 풀었다.
1. 여는 괄호를 count 한다.
2. 닫는 괄호가 나왔을때 count--를 하는데 만약 count==0이면 return NO
3. 반복문이 끝났을 때 count가 0이면 YES
2 - 2. 나의 코드
package Stack_Queue;
import java.util.Scanner;
public class stack_01 {
public static String solution(String str) {
String answer = "NO";
int count =0; //여는 괄호의 개수.
for (char x : str.toCharArray()) {
if(x =='(') count++;
if(x ==')'){
if(count ==0) return "NO";
else count--;
}
}
if(count == 0) return "YES";
return answer;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
System.out.println(solution(str));
}
}
3 - 1. 강의 풀이
JAVA 자료구조 Stack을 사용했다.
풀이 방식은 나와 같다. 다만 Stack을 직접 사용 했을 뿐!
package Stack_Queue;
import java.util.*;
public class stack_01_solution {
public static String solution(String str) {
String answer = "YES";
Stack<Character> stack = new Stack<>();
for (char x : str.toCharArray()) {
if(x =='(') stack.push(x);
else{ // x == ')';
if(stack.isEmpty()) return "NO";
stack.pop();
}
}
//스택에 자료가 남아있으면
if(!stack.isEmpty()) return "NO";
return answer;
}
public static void main(String[] args) {
}
}
4. 얻어갈 점
JAVA 자료구조 Stack과 Queue를 공부하고 직접 구현할 수 있어야한다.
괄호가 있으면 십중팔구는 Stack을 사용한다!!
'자바 알고리즘 문제풀이 > Stack, Queue(자료구조)' 카테고리의 다른 글
6. 공주 구하기 (1) | 2023.10.19 |
---|---|
5. 쇠막대기 (1) | 2023.10.19 |
4. 후위식 연산 (1) | 2023.10.19 |
3. 크레인 인형뽑기 (0) | 2023.10.19 |
2. 괄호문자제거 (0) | 2023.10.08 |