-
[BOJ-2566]백준 알고리즘 2566 [Kotlin][Java]Algo 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'Algo' 카테고리의 다른 글
[LeetCode]Reverse Integer (0) 2019.06.22 [LeetCode] Climbing Stairs (0) 2019.05.06 [LeetCode] Two sum (0) 2019.03.10 [BOJ 2455] 백준 알고리즘 2455 (0) 2019.03.03 정해진 범위 안에 배수 구하기. (0) 2018.09.20