괄호 회전하기

최진훈·2022년 5월 3일
0

programmers

목록 보기
69/73


반복문을 돌려서 문자열을 바꿔가면서 조건을 상세하게 달아줄 것이다. 예를 들어 현재 인덱스의 원소가 [가 나오면 stack에 넣어주고 하나하나 넘어가다가 ]가 나오면 이전에 넣어놓았던 [를 빼서 상쇄시켜주면 된다. stack에 넣는 이유는 [{}]이런식일때 뒤에 넣었던 {부터 빼내주기 위함이다. stack을 오랜만에 사용하기때문에 한번 더 살펴보고 가야겠다.

source : https://genius-dev.tistory.com/entry/Kotlin%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-Stack%EA%B3%BC-Queue%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC


아마 pop()peek()정도를 사용하게 될 듯 하다.

  1. 입력받은 s의 배열을 바꿔가며 진행해야하므로 새로운 변수에 저장한다.
  2. s의 길이만큼 반복문을 반복하면서 상세 조건을 달아준다.
    2-1. stack이 비어있으면 현재의 원소를 push()한다.
    2-2. 현재의 원소가 [,{,(이러한 열린괄호이면 push()한다.
  3. 둘다에 해당하지않는 경우에는 닫은괄호에 따라 맞춰본다. (ex)현재의 원소가 ]이고 stack에서 peek()한 원소가 [일경우엔 pop())
  4. 이렇게 한 문자열을 반복했을때 stack이 비어있으면 answer를 +1한다.
  5. 문자열의 순서를 바꿔줘야 하므로 문자열의 0번째 원소를 맨뒤에 넣고 지워준다.
  6. 문제에서 주어진 answer의 초기값이 -1이었으므로 리턴할때 +1을 해준다.

레고레고


returnanswer만 입력하는걸 좋아하는데 문제를 최대한 안건드리기 위해서 +1을 해주었다. stack을 사용해야겠다는걸 생각하는건 어렵지 않았지만 비어있을때 push()해주는것이 잘 떠오르지 않았다. 그런데 막상 다 풀고나니 그리 어렵지 않은 문제인 것 같기도 하다....

통과~!~!

profile
레고레고

0개의 댓글