https://www.acmicpc.net/problem/10807
4. 1차원 배열
10807. 개수 세기
총 N개의 정수가 주어졌을 때, 정수 v가 몇 개인지 구하는 프로그램을 작성하시오.
- 입력 : 첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 정수가 공백으로 구분되어져있다. 셋째 줄에는 찾으려고 하는 정수 v가 주어진다. 입력으로 주어지는 정수와 v는 -100보다 크거나 같으며, 100보다 작거나 같다.
- 출력 : 첫째 줄에 입력으로 주어진 N개의 정수 중에 v가 몇 개인지 출력한다.
총 코드
import java.io.*
import java.util.*
fun main() {
val br = BufferedReader(InputStreamReader(System.`in`))
val n = br.readLine()!!.toInt()
val st = StringTokenizer(br.readLine(), " ")
val arr = IntArray(n)
var total = 0
for (i in 0 until n) {
arr[i] = st.nextToken().toInt()
}
val v = br.readLine()!!.toInt()
for(i in 0 until n) {
if (arr[i] == v) {
total ++
}
}
println(total)
}
- n으로 첫째 줄 정수의 개수를 받아올 변수를 선언
- 첫 번째 for문 : 공백으로 구분 된 정수를 StringTokenizer를 통해 공백을 없애준 후, arr로 선언한 Int 배열에 담아준다.
- 셋째 줄에 찾으려고 하는 정수 v를 읽어오는 변수를 선언
- 두 번째 for문 : 배열에서 찾으려고 하는 정수와 같은 숫자가 있는 값을 찾고, 그 값을 total에 더해준다.
여기서 BufferedWriter를 사용하여 출력의 차이가 있는지 비교해보자 !
(위 아래 둘 다 성공한 코드)
import java.io.*
import java.util.*
fun main() {
val br = BufferedReader(InputStreamReader(System.`in`))
val bw = BufferedWriter(OutputStreamWriter(System.out))
val n = br.readLine()!!.toInt()
val st = StringTokenizer(br.readLine(), " ")
val arr = IntArray(n)
var total = 0
for (i in 0 until n) {
arr[i] = st.nextToken().toInt()
}
val v = br.readLine()!!.toInt()
for(i in 0 until n) {
if (arr[i] == v) {
total ++
}
}
bw.write("$total\n")
bw.close()
}
이렇게 BufferedWriter를 통해 값을 출력해주었다.
1번 : println()
2번 : BufferedWriter
둘 다 시간은 동일, 코드 길이가 길어져 메모리 차이가 미세하게 있다.
사실 이 코드에서 둘의 차이는 크지 않다고 생각한다.
메모리를 더 사용하는 코드가 생기면 다시 비교를 해보도록 하자 !
'Kotlin > Kotlin Algorithm' 카테고리의 다른 글
[백준 Kotlin] 10810. 공 넣기 (0) | 2023.03.29 |
---|---|
[백준 Kotlin] 10871. X보다 작은 수 (0) | 2023.03.28 |
[백준 Kotlin] 2438. 별찍기 -1 (0) | 2023.03.27 |
[백준 Kotlin] 15552. 빠른 A+B (0) | 2023.03.26 |
[백준 Kotlin] 10950. A+B-3 (0) | 2023.03.24 |