Algo
[BOJ-2566]백준 알고리즘 2566 [Kotlin][Java]
onemask
2019. 4. 28. 20:36
Kotlin에 조금 더 익숙해지고자 BOJ를 코틀린으로 풀고 있다.
문제 링크 : https://www.acmicpc.net/problem/2566
- 문제
- [Java]
import java.util.Scanner;
public class Baek_2566_java {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int max = 0;
int[][] array = new int[9][9];
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
array[i][j] = sc.nextInt();
max = Math.max(max, array[i][j]);
}
}
System.out.println(max);
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
if (array[i][j] == max) {
System.out.println((i + 1) + " " + (j + 1));
}
}
}
}
}
-
[Kotlin]
import java.util.Scanner
fun main(args: Array<String>) {
val sc = Scanner(System.`in`)
val array = Array(9) { IntArray(9) }
var max = 0
var row =0
var colum = 0
for (i in array.indices) {
for (j in 0 until array[i].size) {
array[i][j] = sc.nextInt()
if (array[i][j]>max){
max = array[i][j]
row =i
colum = j
}
}
}
println(max)
println("${row+1} ${colum+1}")
}
솔직히 Java로 짠것도 썩 맘에 들지 않는다.
다만 코틀린으로 쉽게 코드가 떠오르지 않을 때
JAVA로 풀어서 Kotlin으로 변환하는 방법을 종종 취한다.
Java에서는 For문 2번으로 max값과 최댓값의 column, row 값을 알 수 있었으나
이후 코드를 좀 더 줄이고자 Kotlin에서는 다른 방법으로 코드를 작성해 보았다.
내가 작성한 Kotlin 코드도 변수가 많아서 맘에 들지 않지만,
일단 코드를 풀어보자면
> Java
int [][] array = new int[9][9]
for (int j = 0; j < array[i].length; j++) {
//j는 0~8까지.
}
> Kotlin
val array = Array(9){IntArray(9)}
for (j in 0 until array[i].size) {
//j는 0~8 까지
}
둘 다 같은 의미다.
사실 Kotlin에서 2D 배열을 선언하는 방법이 저것 말고 다른 것도 있을 것 같은데
이후 좀 찾아봐야겠다.
Kotlin에서는 until 은 열린 기호라고 보면 된다.
array [i]. size는 9이기 때문에 j는 9를 포함하지 않는다.
음 좀더 코틀린(?) 스럽게 문제를 풀고자 노력해야겠다.
LIST