Uknow's Lab.
article thumbnail

https://www.acmicpc.net/problem/10773

 

10773번: 제로

첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경

www.acmicpc.net

 

난이도 : 실버 4
태그 : 구현, 자료 구조, 스택

 

 

설명

ArrayList를 사용하면 쉽게 풀 수 있습니다.

0이 아닌 수가 입력으로 들어올 때엔 ArrayList에 하나씩 삽입하다가,

0이 입력으로 들어오면 ArrayList에서 마지막 원소를 빼고,

모든 입력이 들어오면 ArrayList 안에 남아있는 원소의 합을 출력하면 됩니다.

 

소스코드

fun main() {
    val case = readLine()!!.toInt()

    var array = ArrayList<Int>()

    for(i in 0 until case) {
        val read = readLine()!!.toInt()
        if(read == 0){
            array.removeLast()
        } else {
            array.add(read)
        }
    }
    print(array.sum())
}

 

후기

1년전 코틀린을 처음 공부할 때 풀었던 문제였습니다.

코틀린에서는 ArrayList.sum()이라는 리스트 내 원소의 합을 구할 수 있는 편의 기능을 제공하는 것을 보고

감탄했던 기억이 나네요.

profile

Uknow's Lab.

@유노 Uknow

인생은 Byte와 Double 사이 Char다. 아무말이나 해봤습니다.