코딩테스트/SWEA

[SWEA] 1218 괄호짝찾기 - JAVA

5월._. 2022. 2. 7.
728x90

1. 문제

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com


2. 풀이

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.Stack;

public class D4_1218_SW문제해결기본4일차_괄호짝짓기 {

	public static void main(String[] args) throws Exception {
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

		Stack<Character> stack;
		StringBuilder sb = new StringBuilder();

		String pre = "([{<";
		String post = ")]}>";

		for (int tc = 1; tc <= 10; tc++) {
			sb.append("#").append(tc).append(" ");

			int len = Integer.parseInt(in.readLine());
			String line = in.readLine();
			stack = new Stack<>();

			for (int i = 0; i < len; i++) {
				char ch = line.charAt(i);
				if (pre.indexOf(ch) >= 0) stack.push(ch);
				else if (stack.empty()) {
					stack.push('*'); // 체크위해서 넣어둠
					break;
				} else if (pre.indexOf(stack.peek()) == post.indexOf(ch)) stack.pop();
				else break;
			}

			if (stack.empty()) sb.append("1\n");
			else sb.append("0\n");
		}
		System.out.print(sb);
	}
}

String의 indexOf를 활용해 현재 ch가 pre String에 포함된다면 스택에 push한다. 포함되지 않을 때의 리턴값이 -1임을 이용했다.

pre에 포함되지 않고 스택이 비어있다면 짝이 맞지 않는 입력값이므로 반복을 그만둔다.

peek의 pre인덱스값과 ch의 post인덱스값이 같아야만 pop시킨다.

그 외의 경우도 짝이 맞지 않는 입력값이므로 반복을 그만둔다.

 

이 문제들과 비슷하다.

2022.02.05 - [알고리즘/BOJ] - [BOJ] 9012 괄호 - JAVA

 

[BOJ] 9012 괄호 - JAVA

1. 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; public class BOJ_9012_괄호 { public static void main(String[] args) thro..

january-diary.tistory.com

2022.02.05 - [알고리즘/BOJ] - [BOJ] 4949 균형잡힌 세상 - JAVA

 

[BOJ] 4949 균형잡힌 세상 - JAVA

1. 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; public class BOJ_4949_균형잡힌세상 { public static void main(String[] ar..

january-diary.tistory.com


3. 결과

if문 여러개로 좀 더럽게 풀었다가 String indexOf 방식을 알게되었다. 시간은 좀 느려졌지만 코드가 짧아지고 가독성이 좋아져서 만족스럽다!

'코딩테스트 > SWEA' 카테고리의 다른 글

[SWEA] 1224 계산기3 - JAVA  (0) 2022.02.09
[SWEA] 1223 계산기2 - JAVA  (0) 2022.02.09
[SWEA] 1861 정사각형 방 - JAVA  (0) 2022.02.09
[SWEA] 3499 퍼펙트셔플  (0) 2022.02.09
[SWEA] 5215 햄버거 다이어트 - JAVA  (0) 2022.02.07

댓글