Stack 의 대표적인 문제
스택(Stack)은 LIFO (Last In First Out)을 따른다.
스택에서 자료를 넣는 것을 '푸시(push)'라고 하고, 자료를 빼는 것을 '팝(pop)'이라고 한다.
마치 책을 쌓아 놓은 것처럼 생각해 볼 수 있다. 새로운 책(자료)을 제일 위에 올려놓는다(push).
그리고 책을 가져갈 때는 제일 위에 있는 책부터 가져간다(pop).
따라서 가장 마지막에 들어온 것이 가장 먼저 나가는 구조를 가지고 있다.
[출처] (자료구조) 스택, 큐, 덱, 리스트 정리|작성자 써밋
써밋의 개발 블로그 : 네이버 블로그
컴퓨터교육과 3학년
blog.naver.com
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Inflearn36 {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String input = bf.readLine();
Stack<Character> stack = new Stack<>();
boolean answer = true;
for(char x : input.toCharArray()) {
if(x == '(') {
stack.push(x);
}
else {
if(stack.isEmpty()) {
answer = false;
break;
}
stack.pop();
}
}
if(answer && stack.isEmpty()) {
System.out.println("YES");
} else {
System.out.println("NO");
}
}
}
풀다가 미처 생각하지 못했던 부분은 if(answer && stack.isEmpty()) 이었다.
foreach 문에서 isEmpty() 의 유무만 확인하고 , foreach 문이 다 끝난 후에도 확인을 해야한다는 점을 놓쳤다.
문자열의 배열을 다 확인한 후에도 if(answer && stack.isEmpty()) 를 통해 한번 더 스택이 비어있음을 확인해주자!
.
.
(에드센스 수락해주세여)
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 - 인프런 | 강의
자바(Java)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 코딩테스트에서 가장 많이 출제되는 Top 10 Topic을 다루고 있습니다. 주제와 연동하여 기초문제부터 중급문제까지 단계적으로 구성
www.inflearn.com
'Java' 카테고리의 다른 글
[JAVA] Brute Force 알고리즘 (0) | 2023.08.12 |
---|---|
[ JAVA ] BufferedReader , StringTokenizer, StringBuilder 을 사용하는 이유 (0) | 2023.08.12 |
#13 자바(JAVA) 알고리즘 문제풀이 : 코딩테스트 대비 / 연속된 자연수의 합 (0) | 2023.07.26 |
#12 자바(JAVA) 알고리즘 문제풀이 : 코딩테스트 대비 / 매출액의 종류 (2) | 2023.07.26 |
#11 자바(JAVA) 알고리즘 문제풀이 : 코딩테스트 대비 / 학습 회장 ( Hash ) (0) | 2023.07.22 |