1218 괄호 짝짓기 문제 링크
#1
import java.io.*;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Scanner;
import java.util.StringTokenizer;
class Solution
{
public static void main(String args[]) throws Exception
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T;
T=10;
for(int test_case = 1; test_case <= T; test_case++)
{
int N = Integer.parseInt(br.readLine());
String a = br.readLine();
char b;
int m1 = 0;
int m2 = 0;
int m3 = 0;
int m4 = 0;
for(int i=0; i<N; i++) {
b = a.charAt(i);
if(b=='(') {
m1++;
} else if (b=='[') {
m2++;
} else if (b=='{') {
m3++;
} else if (b=='<') {
m4++;
} else if (b==')') {
m1--;
} else if (b==']') {
m2--;
} else if (b=='}') {
m3--;
} else if (b=='>') {
m4--;
}
}
System.out.println("#"+test_case+" "+ (m1==0 && m2==0 && m3==0 && m4==0 ? 1 : 0));
}
}
}

- 괄호 개수만 체크 했는데 풀렸음
(<)>, ()>< 같은 경우에는 1이 나와야 되는데 그거 고려 안 해도 그냥 통과됨..
- 문제 의도는 그게 아니지 싶은데..
#2
import java.io.*;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Scanner;
import java.util.StringTokenizer;
class Solution
{
public static void main(String args[]) throws Exception
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T;
T=10;
for(int test_case = 1; test_case <= T; test_case++)
{
int N = Integer.parseInt(br.readLine());
String a = br.readLine();
Deque<Character> m = new ArrayDeque<>();
char b, c;
int answer = 1;
for(int i=0; i<N; i++) {
b = a.charAt(i);
if(b=='(' || b=='[' || b=='{' || b=='<') {
m.addLast(b);
}
else {
if(m.isEmpty()) {
answer = 0;
break;
}
c = m.pollLast();
if (b == ')') {
if(c != '(') {
answer = 0;
break;
}
} else if (b == ']') {
if(c != '[') {
answer = 0;
break;
}
} else if (b == '}') {
if(c != '{') {
answer = 0;
break;
}
} else if (b == '>') {
if(c != '<') {
answer = 0;
break;
}
}
}
}
System.out.println("#"+test_case+" "+ answer);
}
}
}

(<)>, ()>< 고려해서 다시 짜기는 했는데 테스트 케이스가 없어서 확실히 맞은 건지 모르겠네
1219 길찾기 문제 링크
#1
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;
import java.io.FileInputStream;
class Solution
{
public static void main(String args[]) throws Exception
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T;
T=10;
for(int test_case = 1; test_case <= T; test_case++)
{
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int C = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
int a;
int[][] arr = new int[2][100];
for(int i=0; i<C; i++) {
a = Integer.parseInt(st.nextToken());
if(arr[0][a] == 0) arr[0][a] = Integer.parseInt(st.nextToken());
else arr[1][a] = Integer.parseInt(st.nextToken());
}
boolean[][] visited = new boolean[2][100];
Deque<Integer> list = new ArrayDeque<>();
list.add(0);
int answer = 0;
int now;
while (!list.isEmpty()) {
now = list.pollFirst();
for(int i=0; i<2; i++) {
if(arr[i][now] != 0 && !visited[i][now]) {
if(arr[i][now] == 99) {
answer = 1;
break;
}
visited[i][now] = true;
list.addLast(arr[i][now]);
}
}
}
System.out.println("#"+test_case+" "+answer);
}
}
}
