728x90
효율성 검사 있을줄 알았는데 없엇다..
그냥 문자열 떼고 붙이고 검사하고 떼고 붙이고 검사해도됨..
속도는 느리지만 통과는 된다
나는 규칙을 찾으려고 노력했는데
1. 일단 홀수는 올바른 괄호 문자열 절대 못 만듬
2. s + s.substring(0, s.length()-1)해서 만든 string의
올바른 괄호 문자열 List들의 원소들의 총 합이 기존 s.length()보다 커야함 (Line:54)
3. Line:57~69는 누적합같은거로한듯..?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
import java.util.*;
class Solution {
private static List<Integer> bracketList;
private static Stack<Character> st;
private static int num;
public int solution(String s) {
if(s.length()%2==1) return 0;
int answer = 0;
int len = s.length();
s += s.substring(0, len-1);
// System.out.println(s);
st = new Stack<>();
bracketList = new ArrayList<>();
num = 0;
for(int i=0; i<s.length(); i++){
char c = s.charAt(i);
switch(c){
case '[':
st.push(c);
num++;
break;
case '(':
st.push(c);
num++;
break;
case '{':
st.push(c);
num++;
break;
case ']':
checkClose(c);
break;
case ')':
checkClose(c);
break;
case '}':
checkClose(c);
break;
}
}
int total = 0;
for(Integer b : bracketList){
total+=b;
}
// System.out.println(total);
// bracketList.forEach(System.out::println);
if(bracketList.size()==0 || total<len) return 0;
int num = 0;
for(int i=1; i<=bracketList.size(); i++){
int temp = 0;
for(int j=0; j<i; j++){
temp+=bracketList.get(j);
}
if(temp == len) answer++;
for(int j=0; j<bracketList.size()-i;j++){
temp-=bracketList.get(j);
temp+=bracketList.get(j+i);
if(temp == len) answer++;
}
}
return answer;
}
private void checkClose(char close){
char open = (close==']')?'[' : (close==')')?'(' : '{';
if(!st.isEmpty()){
if(st.peek()==open){
st.pop();
num++;
if(st.isEmpty()){
bracketList.add(num);
num = 0;
}
}
else{
st.clear();
num = 0;
}
}
}
}
|
cs |
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][JAVA] 위장 (해시, 집합) (0) | 2022.03.27 |
---|---|
[프로그래머스][JAVA] 배달 (플로이드 와샬) (0) | 2022.03.27 |
[프로그래머스][JAVA] 후보키 (비트마스크) (0) | 2022.03.26 |
[프로그래머스][JAVA] 순위 검색 (인덱싱, 이진 탐색, 비트마스크) (0) | 2022.03.26 |
[프로그래머스][JAVA] 예상 대진표 (시뮬레이션..?) (0) | 2022.03.25 |