[프로그래머스] [LV2] 괄호 변환
업데이트:
📚 괄호 변환
링크📎 : https://programmers.co.kr/learn/courses/30/lessons/60058#
난이도 ⭐️⭐️
📖 문제
📝 내 풀이
import java.util.*;
class Solution {
public String solution(String p) {
String answer = "";
Queue<Character> v = new LinkedList<Character>();
for(int i = 0; i < p.length(); i++)
v.offer(p.charAt(i));
answer = transFormation(v);
return answer;
}
public String transFormation(Queue<Character> q){
if(q.isEmpty()) return "";
Queue<Character> u = new LinkedList<Character>();
int chk = 0;
String ans = "";
boolean isCorrect = true;
while(true){
// 올바른 괄호 체크하기 위함 - 로직 매우 간단
if(q.peek() == '(') chk++;
else chk--;
u.offer(q.poll());
if(chk == 0) break;
else if(chk < 0) isCorrect = false;
}
if(isCorrect){
while(!u.isEmpty())
ans += u.poll();
return ans + transFormation(q);
}
ans += "(" + transFormation(q) + ")";
u.remove();
while(u.size()!=1){
if(u.peek() == '(') ans += ")";
else if(u.peek() == ')') ans += "(";
u.remove();
}
return ans;
}
}
👊🏻 내 전략
- 재귀를 쓰라고 문제에 주어졌으니 재귀를 쓰자.
- 따로 함수를 구현하자
- u, v 는 넣다 뺐다를 자주해야하니 queue를 사용하자.
끝-!
댓글남기기