일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- C++
- 경제
- 다독
- 재테크
- 투자
- algorithmStudy
- 프로그래밍언어
- 돈
- Java
- 자바스크립트
- 책알남
- 프로그래머스 알고리즘 공부
- 백준알고리즘
- 주식
- algorithmTest
- 독후감
- 화장품
- 자바
- 책을알려주는남자
- 서평
- 알고리즘 공부
- 성분
- 채권
- algorithmtraining
- 독서
- JavaScript
- C
- 지혜를가진흑곰
- 알고리즘공부
- 알고리즘트레이닝
Archives
- Today
- Total
탁월함은 어떻게 나오는가?
[Algorithm] 괄호 회전하기 ( Programmers / Python & JavaScript ) 본문
[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
반응형
'[Snow-ball]프로그래밍(컴퓨터) > Algorithm Training' 카테고리의 다른 글
[Algorithm] 이진 변환 반복하기 ( Programmers / Python && JavaScript ) (1) | 2024.09.05 |
---|---|
[Algorithm] 2개 이하로 다른 비트 ( Programmers / Python && JavaScript ) (0) | 2024.09.01 |
[Algorithm] 연속 펄스 부분 수열의 합 ( Programmers / Python ) (1) | 2024.03.29 |
[Algorithm] 무인도 여행 ( Programmers / Python ) (1) | 2024.03.24 |
[Algorithm] 미로 탈출 ( Programmers / Python, JavaScript ) (0) | 2024.03.21 |
Comments