[Programmers/JAVA] 괄호 회전하기
2023. 2. 9. 23:57ㆍ자바/프로그래머스
내 코드
class Solution {
public int solution(String s) {
int answer = 0;
String s1="\\[\\]"; // ""속에 특정 기호들을 넣을 때는 \\ 이걸 써줘야함.
String s2="\\(\\)";
String s3="\\{\\}";
for(int i=0; i<s.length(); i++) {
s=s.substring(1,s.length())+s.substring(0,1); //s를 왼쪽으로 한칸씩 밀어줌.
String s_new=s; //s를 s_new에 저장. 원래 s값이 for문안에서 매번 필요하기 때문이다. s_new는 값이 변형될거임.
while(true) {
String s_backup=s_new; // 연산 후의 s_new값과 연산 전의 값을 비교하기 위해서.
s_new=s_new.replaceAll(s1, "");
s_new=s_new.replaceAll(s2, "");
s_new=s_new.replaceAll(s3, "");
if(s_new.equals("")) { // s_new가 다 비워졌다면 빠져나가기.
answer++;
break;
}
if(s_backup==s_new) { // 연산 후의 s_new값이 연산 전과 같다는 건 제대로된 기호가 없었다는 뜻! 바로 break.
break;
}
}
}
return answer;
}
}
느낀점
나는 정말이지 이번에야 stack을 써볼 기회라고 생각했다...
하...근데 아무리 생각해도 모르겠더라..
짝끼리 같은 숫자로 치환해서 stack으로 push, pop을 해볼까?? 했는데...
같은 값으로 치환해버리면 "(([[}}" <<이 형태도 통과가 되어버려서...
포기하고 위처럼 풀었다. stack 쓰고싶다... ㅜㅜ
'자바 > 프로그래머스' 카테고리의 다른 글
[Programmers/JAVA] 튜플 (0) | 2023.02.13 |
---|---|
[Programmers/JAVA] 행렬의 곱셈 (0) | 2023.02.10 |
[Programmers/JAVA] H-Index (0) | 2022.12.30 |
[Programmers/JAVA] 멀리 뛰기 (0) | 2022.12.30 |
[Programmers/JAVA] 점프와 순간 이동 (0) | 2022.12.28 |