https://school.programmers.co.kr/learn/courses/30/lessons/60058
올바르지 않은 괄호를 올바르게 만드는 문제
for (int i = 0; i < p.length(); i++) {
u.append(p.charAt(i));
int a = 0;
int b = 0;
for (int j = 0; j < u.length(); j++) {
if (u.charAt(j) == '(') {
a++;
} else {
b++;
}
}
if (a == b) {
break;
}
}
일단 괄호의 개수가 알맞는지를 확인
public boolean check(String p) {
int number = 0;
for (int i = 0; i < p.length(); i++) {
if (p.charAt(i) == '(') number++;
else number--;
if (number < 0) {
return false;
}
}
return true;
}
괄호가 올바르게 있는지를 체크
if (check(u.toString())) {
u.append(solution(v.toString()));
return u.toString();
} else {
sb.append("(");
sb.append(solution(v.toString()));
sb.append(")");
for (int i = 1; i < u.length() - 1; i++) {
if (u.charAt(i) == '(') {
sb.append(")");
} else {
sb.append("(");
}
}
}
return sb.toString();
false라면 괄호를 올바르게 바꾸어주기
class Solution {
public String solution(String p) {
StringBuilder sb = new StringBuilder();
StringBuilder u = new StringBuilder();
if (p.length() == 0) {
return p;
}
for (int i = 0; i < p.length(); i++) {
u.append(p.charAt(i));
int a = 0;
int b = 0;
for (int j = 0; j < u.length(); j++) {
if (u.charAt(j) == '(') {
a++;
} else {
b++;
}
}
if (a == b) {
break;
}
}
StringBuilder v = new StringBuilder(p.substring(u.length()));
if (check(u.toString())) {
u.append(solution(v.toString()));
return u.toString();
} else {
sb.append("(");
sb.append(solution(v.toString()));
sb.append(")");
for (int i = 1; i < u.length() - 1; i++) {
if (u.charAt(i) == '(') {
sb.append(")");
} else {
sb.append("(");
}
}
}
return sb.toString();
}
public boolean check(String p) {
int number = 0;
for (int i = 0; i < p.length(); i++) {
if (p.charAt(i) == '(') number++;
else number--;
if (number < 0) {
return false;
}
}
return true;
}
}
'Programmers' 카테고리의 다른 글
[프로그래머스][JAVA]Lv. 2 - 튜플 (0) | 2023.09.25 |
---|---|
[프로그래머스][JAVA]Lv. 2 - 멀쩡한 사각형 (0) | 2023.09.25 |
[프로그래머스][JAVA]Lv. 3 - 정수 삼각형 (0) | 2023.07.31 |
[프로그래머스][JAVA]Lv. 2 - 문자열 압축 (0) | 2023.07.30 |
[프로그래머스][JAVA]Lv. 2 - 방문 길이 (0) | 2023.07.17 |