[Snow-ball]프로그래밍(컴퓨터)/Algorithm Training
[Algorithm] 괄호 회전하기 ( Programmers / Python & JavaScript )
Snow-ball
2024. 8. 28. 21:39
반응형
문제 설명
다음 규칙을 지키는 문자열을 올바른 괄호 문자열이라고 정의합니다.
- (), [], {} 는 모두 올바른 괄호 문자열입니다.
- 만약 A가 올바른 괄호 문자열이라면, (A), [A], {A}도 올바른 괄호 문자열입니다. 예를 들어, []가 올바른 괄호 문자열이므로, ([])도 올바른 괄호 문자열입니다.
- 만약 A, B가 올바른 괄호 문자열이라면, AB도 올바른 괄호 문자열입니다. 예를 들어, {}와 ([])가 올바른 괄호 문자열이므로, {}([])도 올바른 괄호 문자열입니다.
대괄호, 중괄호, 그리고 소괄호로 이루어진 문자열 s가 매개변수로 주어집니다. 이 s를 왼쪽으로 x(0 <= x < (s의 길이)) 칸만큼 회전시켰을 때 s가 올바른 괄호 문자열이 되게 하는 x의 개수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- s의 길이는 1 이상 1,000 이하 입니다.
입출력 예
풀이
python:
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
|
def is_validate_rotation_value(str):
map = {
'(': ')',
'{': '}',
'[': ']'
}
stack = []
for _ in str:
if _ in "({[":
stack.append(_)
else:
if not stack:
return False
top = stack.pop()
if map[top] != _:
return False
return True
def solution(s):
count = 0
for i in range(len(s)):
a = s[i:]
b = s[:i]
rotated = a + b
print(rotated)
if is_validate_rotation_value(rotated):
count += 1
return count
|
cs |
javascript:
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
|
function rotatedValidate(str) {
const map = {
"(": ")",
"{": "}",
"[": "]",
};
const stack = [];
for (let i = 0; i < str.length; i++) {
const s = str[i];
if (str === "(" || str === "{" || str == "[") {
stack.push(s);
}
}
}
function solution(s) {
let count = 0;
const len = s.length;
for (let i = 0; i < len; i++) {
const a = s.slice(i);
const b = s.slice(0, i);
console.log(`a: ${a} b: ${b}`);
const rotated = a + b;
console.log("rotated : ", rotated);
if (rotatedValidate(rotated)) {
count++;
}
}
return count;
}
|
cs |
https://school.programmers.co.kr/learn/courses/30/lessons/76502?language=python3
반응형