개발새발 - IT 기술블로그
article thumbnail

백준 알고리즘  - 코틀린 풀이

 

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

 

10773번: 제로

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

www.acmicpc.net

 


 

 

문제

 


 

 

정답

import java.io.BufferedReader
import java.io.InputStreamReader

fun main(): Unit  = with(BufferedReader(InputStreamReader(System.`in`))) {
    val input = readLine().toInt()
    val array = ArrayList<Int>()

    repeat(input) {
        val n = readLine().toInt()
        if(n == 0) {
            array.removeLast()
        } else {
            array.add(n)
        }
    }

    println(array.sum())
}

 

 

풀이

10773번 문제는 입력을 받는 도중 0이 입력으로 들어오면 마지막 값을 지우고, 0이 아닌 값이 들어오면 저장 시켜 누적합을 구하는 문제입니다. 

 

배열의 인덱스를 다루는 문제라고 보시면 됩니다.

 

 

Integer 타입의 ArrayList를 생성합니다.

val array = ArrayList<Int>()

 

 

만약 입력이 0이라면 배열의 lastIndex를 remove하고, 0이 아니라면 입력값을 add합니다.

if(n == 0) {
    array.removeLast()
} else {
    array.add(n)
}

 

마지막으로 배열의 엘리먼트들의 합을 출력해주시면 됩니다.

println(array.sum())

 

 

감사합니다.