다희의 코딩 성장일기
[프로그래머스] level2. 괄호 회전하기 (자바 JAVA) 본문
[ 문제 ] [프로그래머스] level2. 괄호 회전하기 (자바 JAVA)
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/76502
# 접근 방법 및 풀이
- 문제대로 구현하면 된다. 먼저, 올바른 괄호열인지 체크하는 함수를 따로 빼주었다.
- 문자열 배열 s를 왼쪽으로 한칸 씩 옮겨서 올바른 괄호열인지 체크하면 되는데, 이때 substring()을 이용했다.
- s의 맨 앞글자를 분리시켜서 s의 뒤에 분리한 앞글자를 더하면 왼쪽으로 한칸씩 이동하는 형태가 된다.
- 자세한건 코드참조
# 주의할 점
- 딱히 없음
JAVA 코드
import java.util.*;
class Solution {
public int solution(String s) {
int answer = 0;
for(int i = 0; i < s.length(); i++){
String a = s.substring(0,1);
s = s.substring(1, s.length());
s += a;
if(check(s))
answer++;
}
return answer;
}
public static boolean check(String s){
Stack<Character> stack = new Stack<>();
for(int i = 0; i < s.length(); i++){
char c = s.charAt(i);
if(c == '{' || c == '['|| c == '(' ){
stack.add(c);
}else{
if(stack.isEmpty())
return false;
else{
char pop = stack.pop();
if(c == ')' && pop =='(')
continue;
if(c == '}' && pop =='{')
continue;
if(c == ']' && pop =='[')
continue;
return false;
}
}
}
if(!stack.isEmpty())
return false;
return true;
}
}
REVIEW
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] level1. 로또의 최고순위와 최저순위 (자바 JAVA) (0) | 2021.08.27 |
---|---|
[프로그래머스] level2. [1차] 캐시 (자바 JAVA) (0) | 2021.08.26 |
[프로그래머스] level2. 카카오프렌즈 컬러링북 (자바 JAVA) (0) | 2021.08.26 |
[프로그래머스 SQL] level2. DATETIME에서 DATE로 형 변환 (MySQL) (0) | 2021.08.26 |
[프로그래머스 SQL] level2. 중성화 여부 파악하기 (MySQL) (0) | 2021.08.26 |
Comments