경험의 기록

문제 : www.acmicpc.net/problem/1932

 

1932번: 정수 삼각형

첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다.

www.acmicpc.net

 

 

import java.util.*
import kotlin.collections.ArrayList
import kotlin.math.max

fun main() = with(Scanner(System.`in`)){
    var n = nextInt()
    // 임시 저장용
    var tmparr = ArrayList<Int>()
    // 입력받는 배열
    var arr = ArrayList<ArrayList<Int>>()

    for(i in 0 until n){
        for(j in 0 .. i){
            tmparr.add(nextInt())
        }
        arr.add(tmparr)
        tmparr = arrayListOf()
    } // 배열 입력해줌

    for(i in 1 until n){
        for(j in 0 .. i){
            when(j){
                // 맨 왼쪽 수 일때
                0 -> {
                    arr[i][j] += arr[i-1][0]
                }
                // 맨 오른쪽 수 일때
                i -> {
                    arr[i][j] += arr[i-1][j-1]
                }
                // 중간 숫자들
                else -> {
                    arr[i][j] += max(arr[i-1][j-1],arr[i-1][j])
                }
            }
        }
    }


    println(arr[n-1].max())
}

처음엔 스캐너로 입력을 받았는데 메모리,시간 면에서 낭비한 것이 너무 많은 것 같아서

 

import java.io.BufferedReader
import java.io.InputStreamReader
import kotlin.collections.ArrayList
import kotlin.math.max

fun main() = with(BufferedReader(InputStreamReader(System.`in`))){
    val n = readLine().toInt()
    val arr = ArrayList<IntArray>()

    for(i in 0 until n){
        arr.add(readLine().split(" ").map { it.toInt() }.toIntArray())
    }

    for(i in 1 until n){
        for(j in 0 .. i){
            when(j){
                // 맨 왼쪽 수 일때
                0 -> {
                    arr[i][j] += arr[i-1][0]
                }
                // 맨 오른쪽 수 일때
                i -> {
                    arr[i][j] += arr[i-1][j-1]
                }
                // 중간 숫자들
                else -> {
                    arr[i][j] += max(arr[i-1][j-1],arr[i-1][j])
                }
            }
        }
    }

    println(arr[n-1].max())
}

BufferedReader를 사용하였다.

 

시간과 메모리 면에서 이득을 볼 수 있다.

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading