티스토리 뷰
이 문제는 카카오 코딩테스트중 쉬운문제에 속하는 편.
하지만 나에게는 생각보다 어려웠다 ㅠㅠ
-프로그래머스 문제
https://programmers.co.kr/learn/courses/30/lessons/60058
public static String Solution(String p) {
//p=")("; 테스트
String answer="";
if(p.equals("")){
return answer;
}
answer = separate(p);
return answer;
}
//u와 v를 분리
public static String separate(String s){
String u="";
String v="";
String result="";
int left=0;
int right=0;
if(s.isEmpty()) return result;
for(int i=0;i<s.length();i++){
if(s.charAt(i)=='('){
left++;
}
else if(s.charAt(i)==')')
right++;
if(left==right){
for(int j=0;j<s.length();j++){
if(j<=i)
u+=s.charAt(j);
else
v+=s.charAt(j);
}
// System.out.printf("u=%s,v=%s%n",u,v);
//u가 올바른괄호일경우 결과에 붙임
//v는 재귀함수를 통해 다시 분리하는과정 수행
if(check(u))
result = u+separate(v);
else{
if(!v.equals(""))
v=separate(v);
result = correct(u,v);
}
break;
}
}
return result;
}
//올바른 괄호로 변환해주는 함수
public static String correct(String u, String v){
String result="";
result+="(";
result+=v;
result+=")";
u = u.substring(1, u.length()-1);
String[] str = u.split("");
for(int i=0;i<str.length;i++){
if(str[i].equals("(")){
str[i] = ")";
}else if(str[i].equals(")"))
str[i]="(";
}
StringBuilder builder = new StringBuilder();
for(String s : str) {
builder.append(s);
}
u = builder.toString();
result+=u;
return result;
}
//올바른 괄호인지 확인해주는 함수
public static boolean check(String s){
Stack<Character> st = new Stack<>();
boolean ans = true;
for(int i=0;i<s.length();i++){
if(s.charAt(i)=='('){
st.push(s.charAt(i));
}else if(!st.isEmpty()){
st.pop();
}else{
ans = false;
break;
}
}
if(!st.isEmpty()) ans = false;
return ans;
}
공부할겸 차근차근 풀어보는중..
내가짠 코드는 항상 더럽.. 좀 더 클린코드 짜는 연습을 해야겠다!
코딩은 항상 어렵다.....
'CS공부 > 알고리즘&문제풀이' 카테고리의 다른 글
[백준 14889]스타트와 링크/삼성 sw역량 테스트 기출(java) (0) | 2020.05.28 |
---|---|
[백준 16234]인구이동(java) (0) | 2020.05.26 |
[SW Expert Academy 1767]프로세서 연결하기(java) (0) | 2020.05.25 |
[프로그래머스]2018카카오블라인드:[3차]압축(java) (0) | 2020.05.21 |
[백준 15686]치킨배달/삼성 sw역량테스트 기출(java) (0) | 2020.05.17 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Baekjoon
- BFS
- Stomp
- 삼성 sw역량테스트
- SWEA
- 삼성 sw역량 테스트
- git
- 완전탐색
- Heap
- sockjs
- Spring
- java
- 백준
- dfs
- 분리 집합
- JavaScript
- Oracle
- MST
- OS
- 코딩테스트
- 알고리즘
- 채팅
- 프로그래머스
- 자바
- programers
- 정렬
- DP
- 최소 스패닝 트리
- websocket
- 운영체제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함