https://school.programmers.co.kr/learn/courses/30/lessons/76502
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
괄호를 회전시켜 가면서 올바른 괄호가 몇 개인지를 찾는 문제
import java.util.Deque;
import java.util.LinkedList;
import java.util.Stack;
class Solution {
public int solution(String s) {
int answer = 0;
Deque<String> dq = new LinkedList<>();
for (int i = 0; i < s.length(); i++) {
dq.add(s.substring(i, i+1));
}
for (int i = 0; i < s.length(); i++) {
dq.addLast(dq.pop());
answer += func(dq);
}
return answer;
}
public static int func(Deque<String> dq) {
String[] s = new String[dq.size()];
for (int i = 0; i < s.length; i++) {
s[i] = dq.pop();
dq.addLast(s[i]);
}
Stack<String> st = new Stack<>();
st.add(s[0]);
for (int i = 1; i < s.length; i++) {
if (st.isEmpty()) {
st.add(s[i]);
continue;
}
if (st.peek().equals("[") && s[i].equals("]")) {
st.pop();
} else if (st.peek().equals("{") && s[i].equals("}")) {
st.pop();
} else if (st.peek().equals("(") && s[i].equals(")")) {
st.pop();
} else {
st.add(s[i]);
}
}
if (!st.isEmpty()) return 0;
return 1;
}
}
데크를 이용하여 회전을 구현하고 스택과 배열을 이용하여 괄호가 정상적인지를 확인하여 정상적이면 1을, 아니라면 0을 리턴 하여 정답을 구했다
'Programmers' 카테고리의 다른 글
[프로그래머스][JAVA]Lv. 2 - 2개 이하로 다른 비트 (0) | 2023.11.05 |
---|---|
[프로그래머스][JAVA]Lv. 2 - 행렬 테두리 회전하기 (0) | 2023.10.22 |
[프로그래머스][JAVA]Lv. 2 - 순위 검색 (0) | 2023.10.09 |
[프로그래머스][JAVA]Lv. 2 - 이진 변환 반복하기 (1) | 2023.09.25 |
[프로그래머스][JAVA]Lv. 2 - 쿼드압축 후 개수 세기 (0) | 2023.09.25 |