코드스테이츠 Day43
public class Solution {
public boolean balancedBrackets(String str) {
//빈 문자열 거르기
if(str.length()==0) return true;
if(str.length()%2==1) return false;
//괄호의 종류를 단 한가지로 한정합니다.
String part1 = str.replaceAll("\\[", "").replaceAll("\\]","").replaceAll("\\{","").replaceAll("\\}","");
for(int i=0; i<part1.length()/2; i++){
String part = String.valueOf(part1.charAt(i)) + String.valueOf(part1.charAt(part1.length()-1-i));
if(!part.equals("()")) return false;
}
//다른 종류의 괄호도 추가.
String part2 = str.replaceAll("\\(", "").replaceAll("\\)","").replaceAll("\\{","").replaceAll("\\}","");
for(int i=0; i<part2.length()/2; i++){
String part = String.valueOf(part2.charAt(i)) + String.valueOf(part2.charAt(part2.length()-1-i));
if(!part.equals("[]")) return false;
}
String part3 = str.replaceAll("\\[", "").replaceAll("\\]","").replaceAll("\\(","").replaceAll("\\)","");
for(int i=0; i<part3.length()/2; i++){
String part = String.valueOf(part3.charAt(i)) + String.valueOf(part3.charAt(part3.length()-1-i));
if(!part.equals("{}")) return false;
}
// 괄호는 닫힌 괄호가 시작되면, 이후로 열린 괄호가 입력될 수 없습니다 (이럴 경우 실패)
// 문제의 실패한 마지막 코드
for(int i=0; i<str.length()/2; i++){
if(str.charAt(i)==')' || str.charAt(i)=='}' || str.charAt(i)==']') return false;
}
return true;
}
}
레퍼런스 코드에서 너무 복잡하게 풀어서 이해가 잘 안 되길래, 구글링 했더니 진짜 핵 간단한 방법이 있었음.
public class Solution {
public boolean balancedBrackets(String str) {
//빈 문자열 거르기
if(str.length()==0) return true;
if(str.length()%2==1) return false;
// 구글링을 통해 찾은 레퍼런스 코드
while (str.contains("()") || str.contains("[]") || str.contains("{}")) {
str = str.replaceAll("\\(\\)", "")
.replaceAll("\\[\\]", "")
.replaceAll("\\{\\}", "");
if(str.length()==0) return true;
}
return false;
}
}
쏘굿. 그리고 괄호 없을 때는 앞에 '\' 2개 써야함.
Java replace 주의사항
https://mean79.tistory.com/478
<느낀 점>
데일리 코딩 그래도 꽤 풀었는데 마지막에 못 풀어서 아쉽다.
내일 문제는 풀 수 있길!
오늘 학습 내용은 나름대로 이해했다고 생각하지만, 막상 과제 할 때는 페어님이랑 실습했던 내용을 좀 컨닝했다.. ㅎ
실제로 안 보고 바로 만들기는 낯설었던 것 같다.
온갖 편리한 기능들이 이미 Spring에 많이 있다. 수많은 라이브러리들,,
Spring을 배우면 배울수록 이거 만든 사람들 정말 광기라는 생각밖에 안 든다. ㅋㅋㅋㅋㅋ⭐️
내일부터 이틀은 예외처리 공부를 한다. 섹션 3 재미있다.
내일은 아쉽게도 페어 시간이 없는 대신 딥토크 시간이 있다.
이번 페어님과는 그래도 같이 차근히 과제를 해내고 있고, 많이 배우고 있다.