Recent Posts
Recent Comments
Link
- Today
- Yesterday
- Total
메이쁘
(JAVA) 백준 9012번 : 괄호 본문
https://www.acmicpc.net/problem/9012
9012번: 괄호
문제 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)��
www.acmicpc.net
문자열 문제.
이것도 상당히 쉬운 문제이다.
괄호 문제라고 해서 필자는
스택을 쓰거나,
복잡한 조건을 간단히 만들어서 알고리즘을 작성하거나,
예외가 많아 까다로울 줄 알았다.
하지만 단순하게도
int 변수 하나로 큰 조건 없이 '(' 와 ')' 의 개수를 파악하면 된다.
매커니즘과 해설은 크게 의미 없을 것 같고
이 해당 괄호가 VPS 에 부합하는 조건만 파악하면 된다.
1) '(' 는 +1, ')' 는 -1 을 수행한다.
2) 중간에 갯수가 음수가 되는 경우 VPS가 될 수 없다.
3) 개수 파악이 끝난 후, 계산 결과 값이 0이 아닌 경우 VPS가 될 수 없다.
이상입니다.
*** 참고로, String에서 문자 하나하나 꺼내보기 위해 toCharArray() 로 char[] 로 변환해서 파악하셔도 됩니다. (효과는 미미하다.)
하단 소스코드 참고해주세요!
감사합니다.
소스코드
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.io.BufferedReader; | |
import java.io.IOException; | |
import java.io.InputStreamReader; | |
import java.util.StringTokenizer; | |
// 괄호 | |
// 문자열 처리 | |
public class p9012 { | |
static StringBuilder sb; | |
public static void main(String args[]) throws IOException { | |
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); | |
StringTokenizer st = new StringTokenizer(br.readLine()); | |
sb = new StringBuilder(); | |
int n = Integer.valueOf(st.nextToken()); | |
while(n --> 0) { | |
int checkCount = 0; | |
String gualhoStr = br.readLine(); | |
char[] gualhoCharArr = gualhoStr.toCharArray(); | |
boolean vps = true; | |
// 괄호가 담긴 문자열 괄호 탐색 | |
for(int i = 0; i < gualhoCharArr.length; i++) { | |
char gualho = gualhoCharArr[i]; | |
if(gualho == '(') { | |
checkCount++; | |
} | |
else { | |
checkCount--; | |
if(checkCount < 0) { | |
vps = false; | |
break; | |
} | |
} | |
} | |
// VPS 체크 조건 | |
// 중간에 음수가 되지 않고 탐색 및 갯수 확인 결과 0이 되어야 함. | |
if(vps && checkCount == 0) { | |
sb.append("YES").append("\n"); | |
} | |
else { | |
sb.append("NO").append("\n"); | |
} | |
} | |
System.out.print(sb.toString()); | |
} | |
} |
'Algorithm > Baekjoon' 카테고리의 다른 글
(JAVA) 백준 1212번 : 8진수 2진수 (0) | 2020.08.29 |
---|---|
(JAVA) 백준 1373번 : 2진수 8진수 (0) | 2020.08.29 |
(JAVA) 백준 10988번 : 팰린드롬인지 확인하기 (0) | 2020.08.26 |
(JAVA) 백준 1159번 : 농구 경기 (0) | 2020.08.26 |
(JAVA) 백준 2872번 : 우리집엔 도서관이 있어 (0) | 2020.06.14 |