[백준] 9012번: 괄호 - Kotlin[코틀린]

2023. 7. 25. 04:10·알고리즘/Baekjoon

문제

 

 

9012번: 괄호

괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고

www.acmicpc.net


풀이

 

 이 문제는 스택을 이용하여 해결할 수 있다. '('을 입력받은 경우 스택에 저장하고 ')'을 입력받은 경우에는 스택에서 제거하는 방법이다. 이 때, 스택이 비어있을 때')'을 입력받은 경우와 모든 입력을 처리 했는데 스택이 비어있지 않는 경우에는 입력받은 괄호 문자열이 잘못된 문자열인 것이다.

 

 이번에는 mutableList를 이용해 스택을 구현해 보았다. 스택에서 push(n)에 해당하는 함수는 list.add(n)을 이용하고, pop()은 list.removeAt(list.size - 1)을 이용해 구현하면 mutableList로 스택을 구현할 수 있다.

 


코드

 

fun main() {
    val br = System.`in`.bufferedReader()
    val bw = System.out.bufferedWriter()

    val testCase = br.readLine().toInt()

    val stack = mutableListOf<Int>() // stack 구현
    fun push(n: Int) = stack.add(n)
    fun pop(): Int {
        return if(stack.size==0) -1
        else {
            stack[stack.size - 1]
            stack.removeAt(stack.size-1)
        }
    }

    repeat(testCase) {
        for(ps in br.readLine()) {
            when(ps) {
                '(' -> push(1) // '(' 일 때, push(1)
                ')' -> { // ')' 일 때, 
                    if(stack.size==0) {  // stack이 비어있다면 잘못된 괄호 문자열이다.
                        push(1)
                        break
                    } else { // 아니라면 pop()
                        pop()
                    }
                }
            }
        }

        if(stack.size==0) {
            bw.append("YES\n")
        } else { // stack이 비어있지 않다면 NO를 출력하고 stack을 비워준다.
            bw.append("NO\n")
            stack.clear()
        }
    }

    bw.write("")
    bw.flush()
    bw.close()
    br.close()
}

 

'알고리즘 > Baekjoon' 카테고리의 다른 글

[백준] 2667번: 단지번호붙이기 - Kotlin[코틀린]  (0) 2023.07.26
[백준] 2178번: 미로 탐색 - Kotlin[코틀린]  (0) 2023.07.25
[백준] 7568번: 덩치 - Kotlin[코틀린]  (0) 2023.07.21
[백준] 1920번: 수 찾기 - Kotlin[코틀린]  (0) 2023.07.20
[백준] 11726번: 2×n 타일링 - Kotlin[코틀린]  (0) 2023.07.20
'알고리즘/Baekjoon' 카테고리의 다른 글
  • [백준] 2667번: 단지번호붙이기 - Kotlin[코틀린]
  • [백준] 2178번: 미로 탐색 - Kotlin[코틀린]
  • [백준] 7568번: 덩치 - Kotlin[코틀린]
  • [백준] 1920번: 수 찾기 - Kotlin[코틀린]
junghoooooon
junghoooooon
  • junghoooooon
    코드팁스
    junghoooooon
  • 전체
    오늘
    어제
    • 전체 (120)
      • 안드로이드 (0)
        • 코드팁스 (0)
      • 유니티 (0)
        • 코드팁스 (0)
      • 알고리즘 (118)
        • 알고리즘 (0)
        • Baekjoon (118)
      • GitHub (0)
      • 티스토리 (2)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      구현
      투 포인터
      큐
      브루트포스
      문자열
      수학
      소수 판정
      우선순위 큐
      분할 정복
      유니온파인드
      모듈러 곱셈 역원
      티스토리
      MST
      분리집합
      이분 탐색
      프림
      크루스칼
      에라토스테네스의 체
      스택
      그리디
      누적 합
      정렬
      DP
      그래프 탐색
      BFS
      피보나치
      그래프이론
      dfs
      재귀
      백트래킹
    • hELLO· Designed By정상우.v4.10.2
    junghoooooon
    [백준] 9012번: 괄호 - Kotlin[코틀린]
    상단으로

    티스토리툴바