코린이 탈출기
[2020 KAKAO BLIND RECRUITMENT][JAVASCRIPT] 괄호 변환 본문
이 문제도 구냥 구현 문제.
2번까지는 무난한듯 !
3번부터 오지게 헤맸다지요 ...
문제 설명에 구현방법이 순서대로 아주 잘 나와있다.
그대로 코드로 옮기기만 하면 된다.
이것도 문자열을 자르고 붙이고 해야돼서 자바스크립트로 풀어보았다.
이 문제는 설명할 게 딱히 없다. 정말 그대로 옮겨놓은게 다라스...
아! 올바른 괄호 문자열인지 확인할 때 stack의 성질을 이용하였다 !
-전체 코드-
<!DOCTYPE html>
<html>
<script>
var p = "(()())()";
function split_w(w) {
var left_cnt = 0;
var right_cnt = 0;
for (var i = 0; i < w.length; i++) {
if (w[i] == ")") {
right_cnt++;
}
else
left_cnt++;
if (right_cnt == left_cnt)
return i;
}
}
function isCorrect(w) {
var stack = new Array();
for (var i = 0; i < w.length; i++) {
if (w[i] == ")") {
if (stack.length == 0)
return false;
stack.pop();
}
else
stack.push(1);
}
if (stack.length == 0)
return true;
else
return false;
}
function convert(w) {
var new_w = "";
for (var i = 0; i < w.length; i++) {
if (w[i] == ")")
new_w += "(";
else
new_w += ")";
}
return new_w;
}
function recursion(p) {
if (p == "")
return "";
else {
var split = split_w(p);
var u = p.substring(0, split + 1);
var v = p.substring(split + 1, p.length);
if (isCorrect(u)) {
return u + recursion(v);
}
else {
var new_string = "";
new_string += "(";
new_string += recursion(v);
new_string += ")";
var edit_u = u.substring(1, u.length - 1);
new_string += convert(edit_u);
return new_string;
}
}
}
function solution(p) {
var answer = '';
answer = recursion(p);
console.log(answer);
return answer;
}
solution(p);
</script>
</html>
'문제 풀이' 카테고리의 다른 글
[2020 KAKAO BLIND RECRUITMENT][JAVASCRIPT] 기둥과 보 설치 (0) | 2020.08.30 |
---|---|
[2020 KAKAO BLIND RECRUITMENT][C++] 자물쇠와 열쇠 (0) | 2020.08.30 |
[2020 KAKAO BLIND RECRUITMENT][JAVASCRIPT] 문자열 압축 (2) | 2020.08.28 |
[2020 KAKAO BLIND RECRUITMENT][C++] 가사 검색 (2) | 2020.08.28 |
[백준 2493] 탑 (1) | 2020.07.30 |