[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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

반응형