프로그래머스 괄호 변환

업데이트:

괄호 변환

문제 설명을 읽어도 어떻게 하라는 건지 이해가 잘 가지 않아 계속 읽음..
읽어도 잘 모르겠어서 설명에 나와 있는 그대로 구현해서 통과함

코드작성은 어렵지 않게 했는데 문제를 이해하는게 어려웠다.

public static class Solution {
	public static String solution(String p) {
		String answer = "";
		// 올바른 괄호 문자열 확인
		if (confirmStr(p))
			return p;
		answer = generateStr(p);
		return answer;
	}

	private static String generateStr(String str) {
		// 빈 문자열 반환

		if (str.equals("")) {
			return "";
		}

		String u = "";
		String v = "";
		int left = 0;
		int right = 0;
		for (int i = 0; i < str.length(); i++) {
			if (str.charAt(i) == '(') {
				left++;
			} else {
				right++;
			}
			u += Character.toString(str.charAt(i));
			if (left == right) {
				if (i < str.length() - 1) {
					v = str.substring(i + 1, str.length());
				}
				break;
			}
		}
		if (confirmStr(u)) {
			u += generateStr(v);
		} else {
			String emptyStr = "(";
			emptyStr += generateStr(v);
			emptyStr += ")";
			for (int i = 1; i < u.length() - 1; i++) {
				if (u.charAt(i) == '(') {
					emptyStr += ")";
				} else {
					emptyStr += "(";
				}
			}
			return emptyStr;
		}
		return u;
	}

	private static boolean confirmStr(String str) {
		boolean result = true;
		int left = 0;
		int right = 0;
		for (int i = 0; i < str.length(); i++) {
			if (str.charAt(i) == '(') {
				left++;
			} else {
				right++;
			}
			if (left < right) {
				result = false;
				break;
			}
		}
		return result;
	}
}

댓글남기기