반응형
https://www.acmicpc.net/problem/9012
import java.util.Scanner;
import java.util.Stack;
public class MyClass {
public static void main(String args[]) throws Exception {
Scanner sc = new Scanner(System.in);
int testcase = Integer.parseInt(sc.nextLine()); //case 수
for(int i = 1; i <= testcase ; i++){
String line = sc.nextLine();
Stack<Character> stack = new Stack<>();
for(int c = 0;c<line.length();c++){
//여는 괄호
if('(' == line.charAt(c)){
stack.push(line.charAt(c));
}else{
//닫는괄호
if(stack.empty()){
System.out.println("NO");
break;
}else{
stack.pop();
}
}
if(c==line.length()-1){
if (stack.empty()) {
System.out.println("YES");
}else{
System.out.println("NO");
}
}
}
}
}
}
* 학습내용
1. String과 char의 비교
- char은 ''를 사용
- String은 ""를 사용
- str.equals(String.valueOf(ch))
- 그냥 '' == ch 해서 char끼리 비교하자...
2. Stack 타입 변수 사용
- 스택 선언하기 : Stack<> stack = new Stack<>();
- push(), pop(), empty()
3. 메모리 사용 영역
JVM이 시작되면 JVM은 운영체제에서 할당받은 메모리 영역을 다음과 같이 세부 영역으로 구분해서 사용한다.
1) Method 영역
- 클래스별로 런타임 상수풀, 필드 데이터, 메소드 데이터, 메소드 코드, 생성자 코드 등을 분류하여 저장한다.
2) Heap 영역
- 객체와 배열이 생성되는 영역
- 생성된 객체/배열을 참조하는 변수나 필드가 없다면 Garbage Collector를 실행시켜 힙 영역에서 자동으로 제거한다.
3) JVM Stack 영역
- 각 스레드가 시작될 때 할당된다.
- 메소드를 호출할 때마다 프레임(메소드의 변수 및 기타 부가정보로 이루어짐)을 push 하고 메소드가 종료되면 pop 하는 동작을 수행함.
- 프레임 내부에는 로컬 변수 스택이 있는데, 최초로 변수에 값이 저장될 때 생성됨.
- 기본 타입 변수는 스택영역에 직접 값을 가짐
- 참조 타입 변수는 값이 아니라 객체 주소를 가짐.
반응형
'코딩 관련 > 코딩문제풀기' 카테고리의 다른 글
[프로그래머스] 완주하지 못한 선수 (0) | 2024.10.04 |
---|---|
[프로그래머스] 숫자 짝꿍 (0) | 2024.10.04 |
[JAVA] 너의 평점은 (0) | 2023.03.12 |
[JAVA] 그룹 단어 체커 (0) | 2023.03.12 |
[JAVA] 크로아티아 알파벳 (0) | 2023.03.11 |