[백준] 10828번: 스택 - Kotlin[코틀린]

2023. 7. 15. 03:13·알고리즘/Baekjoon

문제

 

 

10828번: 스택

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

 


풀이

 

 이 문제는 자바에서 기본적으로 제공하는 Stack을 이용해 풀이 할 수 있지만, 이번에는 배열과 포인터 역할을 하는 변수를 이용하여 구현해 보았다. 입력받은 N크기의 stack 배열을 생성하고, 사용자의 입력에 맞게 함수를 처리한다.

 

push(n) 함수는 ptr을 1 증가시키고 stack[ptr]에 n을 저장한다.

pop() 함수는 ptr이 -1이면 -1을 반환하고, 아니라면 stack[ptr]을 반환하고 ptr을 1 빼준다.

size() 함수는 ptr + 1을 반환한다.

empty() 함수는 ptr이 -1이면 1을 반환하고, 아니라면 0을 반환한다.

top() 함수는 ptr이 -1이면 -1을 반환하고, 아니라면 stack[ptr]을 반환한다.

 

배열과 포인터 대신 List와 List의 크기를 이용하여 구현 할 수도 있다.

 


코드

 

import java.util.*

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

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

    val stack = IntArray(num)
    var ptr = -1

    fun push(n: Int) {
      stack[++ptr] = n
    }
    fun pop(): Int {
        return if(ptr==-1) -1
        else stack[ptr--]
    }
    fun size(): Int = ptr + 1
    fun empty(): Int {
        return if(ptr == -1) 1
        else 0
    }
    fun top(): Int {
        return if(ptr == -1) -1
        else stack[ptr]
    }

    for(i in 0 until num) {
        val line = StringTokenizer(br.readLine())
        when(line.nextToken()){
            "push" -> push(line.nextToken().toInt())
            "pop" -> bw.append("${pop()}\n")
            "size" -> bw.append("${size()}\n")
            "empty" -> bw.append("${empty()}\n")
            "top" -> bw.append("${top()}\n")
        }
    }

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

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

[백준] 1463번: 1로 만들기 - Kotlin[코틀린]  (0) 2023.07.17
[백준] 1316번: 그룹 단어 체커 - Kotlin[코틀린]  (0) 2023.07.17
[백준] 1065번: 한수 - Kotlin[코틀린]  (0) 2023.07.14
[백준] 4673번: 셀프 넘버 - Kotlin[코틀린]  (0) 2023.07.13
[백준] 2839번: 설탕 배달 - Kotlin[코틀린]  (0) 2023.07.12
'알고리즘/Baekjoon' 카테고리의 다른 글
  • [백준] 1463번: 1로 만들기 - Kotlin[코틀린]
  • [백준] 1316번: 그룹 단어 체커 - Kotlin[코틀린]
  • [백준] 1065번: 한수 - Kotlin[코틀린]
  • [백준] 4673번: 셀프 넘버 - Kotlin[코틀린]
junghoooooon
junghoooooon
  • junghoooooon
    코드팁스
    junghoooooon
  • 전체
    오늘
    어제
    • 전체 (120)
      • 안드로이드 (0)
        • 코드팁스 (0)
      • 유니티 (0)
        • 코드팁스 (0)
      • 알고리즘 (118)
        • 알고리즘 (0)
        • Baekjoon (118)
      • GitHub (0)
      • 티스토리 (2)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

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

    티스토리툴바