개발새발 - 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

 


 

 

1. 문제

 


 

 

2. 정답

<kotlin />
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()) }

 

 

3. 풀이

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

 

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

 

 

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

<kotlin />
val array = ArrayList<Int>()

 

 

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

<kotlin />
if(n == 0) { array.removeLast() } else { array.add(n) }

 

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

<kotlin />
println(array.sum())

 

 

감사합니다.