본문 바로가기
스터디(beakjoon)

Kotlin] 백준 1316번 문제풀이

by 김마리님 2023. 6. 13.

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

 

2566번: 최댓값

첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 위치한 행 번호와 열 번호를 빈칸을 사이에 두고 차례로 출력한다. 최댓값이 두 개 이상인 경우 그 중 한 곳의 위치를 출력한다.

www.acmicpc.net

 

 

풀이

더보기

두 개의 배열을 준비한다.

하나는 최대값들을 저장할 배열, 하나는 이 최대값이 배열의 몇 번째 행에 있는지 저장할 용도이다.

 

총 9줄이고, 배열의 인덱스에 꽂아넣어야 하므로 0~8까지 반복문을 반복한다.

반복문의 반복마다 9개의 숫지가 있는 문자열을 받아와서 split(" ").map{ it.toInt() }를 통해 정수배열로 전환한다.

전환된 정수배열.max()를 하여 최댓값을 찾아내고. indexOf(최댓값)를 통해 배열 내의 최댓값이 속한 인덱스를 인덱스 배열에 저장한다. 마찬가지로 최댓값도 최댓값 배열에 저장한다.

 

배열이 종료되었으면 최댓값 배열중에서도 제일 최댓값을 찾는다.

그리고 이 최댓값에서 몇 번째 인덱스인지 미리 찾아둔다. 이것이 행의 인덱스이다.

최댓값에서 구한 인덱스로 인덱스 배열의 위치를 지정하면 그 행의 최댓값이 어디에 위치해있었는지 그 열이 등장한다. 이것이 열의 인덱스이다.

이 때 이것을 프린트 할때는 + 1씩 해주어야 한다. 리턴할 때는 인간의 숫자 방식으로 리턴해줘야 하기 때문이다.

 

이를 코드로 보면,

fun main(args: Array<String>) {
    question2566()
}

fun question2566() {

    var maxList = mutableListOf<Int>()
    var indexList = mutableListOf<Int>()

    for(i in 0 .. 8) {
        var items = readLine()!!.split(" ").map { it.toInt() }
        var max = items.max()
        maxList.add(i, max)
        indexList.add(i, items.indexOf(max))

    }

    var max = maxList.max()
    var index = maxList.indexOf(max)
    println(max)
    println("${index + 1} ${indexList[index] + 1}")

}

 

반응형