반응형
문제분석
여러가지 괄호가 섞인 문자열을 입력값으로주어집니다.
이 괄호를 문자열의 길이만큼 회전시키고, 회전시킨값이 '올바른 괄호 문자열'이라면,
결과값을 1 늘려주는 문제다.
-----------------------------------------------------------------------------------------
우선, 문자열을 회전시키는 로직을 구현해야한다.
필자는, 문자열의 맨 첫번째 문자를 기억해두고,
문자열을 idx 1부터 자른뒤 문자를 붙였다.
문자열 회전시키는 로직을 구현했다면,
회전시킨 문자가 올바른 괄호 문자열인지 확인해야한다.
이 올바른 괄호 문자열을 판별하는건 여러방법이 있겠지만,
Stack을 사용해서 구현하는게 제일 깔끔하다.
괄호가 3종류가 존재하니, {} , (), [] 세종류의 경우를 나눠서 넣으면된다.
문제풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
import java.util.*;
class Solution {
public int solution(String s) {
int answer = 0;
String str=s;
for(int i=0;i<s.length();i++){
char temp=str.charAt(0);
str=str.substring(1)+temp;
if(isCorrect(str)){
answer++;
}
}
return answer;
}
public boolean isCorrect (String str){
Stack<Character> s = new Stack<>();
char[] arr = str.toCharArray();
for(char data:arr){
if(s.isEmpty()){
s.push(data);
}
else if(s.peek()=='['&&data==']'){
s.pop();
}
else if(s.peek()=='('&&data==')'){
s.pop();
}
else if(s.peek()=='{'&&data=='}'){
s.pop();
}
else{
s.push(data);
}
}
if(s.isEmpty()){
return true;
}
return false;
}
}
|
cs |
반응형
'알고리즘 > 프로그래머스 Level2' 카테고리의 다른 글
[프로그래머스,Java] Level2: 프린터 (0) | 2021.11.10 |
---|---|
[프로그래머스,자바] Level2: 전화번호 목록 (2021년 업데이트) (0) | 2021.11.08 |
[프로그래머스,자바] Level2: 튜플 (0) | 2021.11.06 |
[프로그래머스,Java] Level2: 수식 최대화 (0) | 2021.11.04 |
[프로그래머스,Java] Level2: 거리두기 확인하기 (0) | 2021.11.03 |