알고리즘 문제 풀이 / 프로그래머스 (programmers) - 괄호 회전하기
문제 링크
https://programmers.co.kr/learn/courses/30/lessons/76502
문제 풀이
Map을 사용하여 key, value로 비교한다.
올바른 괄호 문자열 비교를 위해 Stack을 사용한다.
이번 풀이는 15점이나 줬다. 여태까지 내가 푼 문제들 중에 가장 배점이 높아서 뿌듯했다. 풀고나서 다른사람들의 풀이를 봤는데 내 코드가 조금 더 나은점이 하나 있었다. 그것은 바로 map 을 사용하여서 괄호의 짝을 미리 지정해둔것이다. (다른사람은 모두 일일히 가져와 비교했다)
어차피 나올 괄호는 () [] {} 세가지로 정해져있기 때문에 map 키에 는 열리는 괄호를 value 에는 닫히는 괄호를 넣어두고 비교했다.
public static int solution(String s) {
int answer = 0;
Map<String, String> bracket = new HashMap<>();
Stack<String> check_stack = new Stack<>();
bracket.put("(", ")");
bracket.put("[", "]");
bracket.put("{", "}");
for(int count = 0; count < s.length(); count++) {
for(int i = 0; i < s.length(); i++) {
String str = s.substring(i ,i + 1);
if(!bracket.containsKey(str)) {
if(check_stack.size() == 0
|| !bracket.get(check_stack.peek()).equals(str)) {
break;
}
check_stack.pop();
if(i == (s.length()-1) && check_stack.size() == 0) {
answer++;
}
}else check_stack.push(str);
}
s = s.substring(1,s.length()) + s.substring(0,1);
check_stack.clear();
}
return answer;
}
반응형
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스(programmers)] (월간 코드 챌린지 시즌1) 이진 변환 반복하기 (0) | 2021.06.04 |
---|---|
[프로그래머스(programmers)] (2021 Dev-Matching) 행렬 테두리 회전하기 (0) | 2021.06.03 |
[프로그래머스(programmers)] (2017 팁스타운) 예상 대진표 (0) | 2021.06.01 |
[프로그래머스(programmers)] (2017 팁스타운) 짝지어 제거하기 (0) | 2021.05.29 |
[Programmers/Summer,Winter Coding(2019)] 멀쩡한 사각형 - Java (0) | 2021.05.28 |
댓글