1. Scanner
fun main() = with(Scanner(System.`in`)) {
val N: Int = nextInt()
val M: Int = nextInt()
val arr = IntArray(N)
var result = 0
for (i in 0 until N) {
arr[i] = nextInt()
}
for (i in 0 until N - 2) {
for (j in i + 1 until N - 1) {
for (k in j + 1 until N) {
val temp = arr[i] + arr[j] + arr[k]
if (M == temp) {
result = temp
}
if (temp in (result + 1) until M) {
result = temp
}
}
}
}
print(result)
}
2. BufferedReader
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
var st = StringTokenizer(readLine(), " ")
val N = st.nextToken().toInt()
val M = st.nextToken().toInt()
val arr = IntArray(N)
var result = 0
st = StringTokenizer(readLine(), " ")
for (i in 0 until N) {
arr[i] = st.nextToken().toInt()
}
for (i in 0 until N - 2) {
for (j in i + 1 until N - 1) {
for (k in j + 1 until N) {
val temp = arr[i] + arr[j] + arr[k]
if (M == temp) {
result = temp
}
if (temp in (result + 1) until M) {
result = temp
}
}
}
}
print(result)
}
3. BufferedReader (Backtracking)
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
var st = StringTokenizer(readLine(), " ")
val N = st.nextToken().toInt()
val M = st.nextToken().toInt()
val arr = IntArray(N)
var result = 0
st = StringTokenizer(readLine(), " ")
for (i in 0 until N) {
arr[i] = st.nextToken().toInt()
}
for (i in 0 until N - 2) {
if (arr[i] > M) continue
for (j in i + 1 until N - 1) {
if (arr[i] + arr[j] > M) continue
for (k in j + 1 until N) {
val temp = arr[i] + arr[j] + arr[k]
if (M == temp) {
result = temp
}
if (temp in (result + 1) until M) {
result = temp
}
}
}
}
print(result)
}
알고리즘은 문제파악이 문제인것같다
뒤로 갈수록 문제 파악하기가 어렵다..
'개발 > 알고리즘' 카테고리의 다른 글
[알고리즘] 백준 10989번 : 수 정렬하기 3 (Kotlin) (1) | 2020.12.11 |
---|---|
[알고리즘] 백준 10870번 : 피보나치 수 5 (Kotlin) (0) | 2020.12.07 |
[알고리즘] 백준 1929번 : 소수 구하기 (Koltin) (0) | 2020.12.06 |
[알고리즘] 백준 2839번 : 설탕 배달 (Kotlin) (0) | 2020.12.02 |
[알고리즘] 백준 1152번 : 단어의 개수 (Kotlin) (0) | 2020.12.01 |
댓글