From 9828169842785f529285cf93854005b45e5c0569 Mon Sep 17 00:00:00 2001 From: rl544 <111494264+rl544@users.noreply.github.com> Date: Tue, 20 Dec 2022 01:36:55 +0900 Subject: [PATCH] =?UTF-8?q?uploaded=20at=202022.=2012.=2020.=20=EC=98=A4?= =?UTF-8?q?=EC=A0=84=201:36:55?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- programmers/괄호 회전하기/solution.java | 83 +++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 programmers/괄호 회전하기/solution.java diff --git a/programmers/괄호 회전하기/solution.java b/programmers/괄호 회전하기/solution.java new file mode 100644 index 0000000..5cb2cee --- /dev/null +++ b/programmers/괄호 회전하기/solution.java @@ -0,0 +1,83 @@ +// [문제 링크]: https://school.programmers.co.kr/learn/courses/30/lessons/76502 + +import java.lang.StringBuilder; +import java.util.Stack; +class Solution { + private String lm(String s, int x){ + StringBuilder ss = new StringBuilder(); + for(int i = 0; i < s.length(); i++){ + ss.append(s.charAt((i+x)%s.length())); + } + return ss.toString(); + } + public long solution(String s) { + long answer = 0; + for(int x = 0; x < s.length(); x++){ + int[] ck = {0, 0, 0}; + Stack st = new Stack<>(); + int temp = 0, state = 0; + state = 0; + for(char a : lm(s, x).toCharArray()){ + int stack = 0, ts = 0, sign = -1; + for(int j = 0; j < 3; j++){ + if(ck[j] > 0){ + state = 1; + break; + } + } + if(a == '(') { + stack = 0; + st.push(stack); + sign = -1; + } + if(a == '[') { + stack = 1; + st.push(stack); + sign = -1; + } + if(a == '{') { + stack = 2; + st.push(stack); + sign = -1; + } + if(a == ')') { + ts = 0; + if(st.empty()||st.pop()!=ts) { + state = 1; + break; + } + stack = ts; + sign = 1; + } + if(a == ']') { + ts = 1; + if(st.empty()||st.pop()!=ts) { + state = 1; + break; + } + stack = ts; + sign = 1; + } + if(a == '}') { + ts = 2; + if(st.empty()||st.pop()!=ts) { + state = 1; + break; + } + stack = ts; + sign = 1; + } + ck[stack] += 1 * sign; + if(state > 0) break; + } + + if(state > 0) continue; + for(int j = 0; j < 3; j++){ + System.out.println(ck[j]); + if(ck[j] == 0) temp ++; + } + if(temp == 3) answer ++; + } + return answer; + } +} \ No newline at end of file