10. 괄호 회전하기
https://school.programmers.co.kr/learn/courses/30/lessons/76502
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
다음 규칙을 지키는 문자열을 올바른 괄호 문장려이라고 정의합니다.
"()","[]","{}" 는 모두 올바른 괄호 문자열입니다.
만약 A가 올바른 괄호 문자열이라면, "(A)", "[A]", "{A}"도 올바른 괄호 문자열입니다. 예를 들어 "[]"가 올바른 괄호 문자열이므로, "([])" 도 올바른 괄호 문자열입니다.
만약 A, B가 올바른 괄호 문자열이라면, AB도 올바른 괄호 문자열입니다. 예를 들어 "{ }" 와 "( [ ] )"가 올바른 괄호 문자열이므로, "{ } ( [ ] )"도 올바른 괄호 문자열입니다.
대괄호, 중괄호 그리고 소괄호로 이루어진 문자열 s가 매개변수로 주어집니다. 이 s를 왼쪽으로 x(0 <= x < (s의 길이)) 칸만큼 회전시켰을 때 s가 올바른 괄호 문자열이 되게 하는 x의 개수를 반환하는 solution() 함수를 완성하세요.
제약조건
s의 길이 1 이상 1000 이하입니다.
입출력의 예
s | result |
"[ ] ( ) { }" | 3 |
"} ] ( ) [ {" | 2 |
"[ ) ( ]" | 0 |
"} } }" | 0 |
내 답안
import java.util.*;
class Solution {
public int solution(String num){
char[] carr = num.toCharArray();
int result = 0;
Stack<Character> ori = new Stack<>();
for(char a : carr){
ori.push(a);
}
for(int i=0; i<carr.length;i++){
if (i>0) ori.add(0,ori.pop());
Stack<Character> st = new Stack<>();
for(char a : ori){
if(st.isEmpty()){
st.push(a);
}else{
if(st.peek()=='{' ||st.peek()=='('||st.peek()=='[' ){
if(cont(a)==st.peek()){
st.pop();
}else{
st.push(a);
}
}else{
st.push(a);
}
}
}
if(st.size()==0){
result +=1;
}
}
return result;
}
char cont(char i){
char result = 0;
switch (i){
case '{':
result = '}';
break;
case '(':
result = ')';
break;
case '[':
result = ']';
break;
case '}':
result = '{';
break;
case ')':
result = '(';
break;
case ']':
result = '[';
break;
}
return result;
}
}
반응형
'컴퓨터 과학 > 💯 코테' 카테고리의 다른 글
코딩 테스트 합격자 되기 | 문제12. 주식 가격 (1) | 2024.11.10 |
---|---|
코딩 테스트 합격자 되기 | 문제11. 짝지어 제거하기 (1) | 2024.11.09 |
코딩 테스트 합격자 되기 | 문제9. 10진수를 2진수로 변환하기 (0) | 2024.11.09 |
코딩 테스트 합격자 되기 | 문제8. 올바른 괄호 (0) | 2024.11.09 |
코딩 테스트 합격자 되기 | 문제7. 방문길이 (0) | 2024.11.09 |