/CompetionProgramming

競技プログラミングプロジェクト

Primary LanguageKotlinMIT LicenseMIT

はじめに

Kotlinで競技プログラミングにチャレンジしてみた

挑戦サイト

AOJ

https://onlinejudge.u-aizu.ac.jp/home

実績

https://onlinejudge.u-aizu.ac.jp/status/users/ValJapan https://onlinejudge.u-aizu.ac.jp/status/users/ValJapan/submissions/1

AC

https://atcoder.jp/?lang=ja

コード

メイン関数

fun main(args: Array<String>) {
  // 処理
}

入力

文字列の入力

val str = readLine()!!

数値の入力

val int =readLine()!!.toInt()

1行に複数項目

val (a,b) = readLine()!!.split(" ")

数値はこちら

val (a,b) = readLine()!!.split(" ").map(String::toInt)

複数行の入力

Array(n){
  readLine()!!.toInt()
}

出力

println(str)

コードを流れるように書きたい場合は、スコープ関数のletと関数参照を使うと次のように書けます。

val str = "Hello World!"
str.let(::println)

for

0からnまでの数値をfor文で回すとき

for(i in 0..n){
  // 処理
}

0からn-1までの数値を増やしていくとき

for(i in 0 until n){
  // 処理
}

nから0までの数値を減らしていくとき

for (i in n downTo 0) {
  // 処理
}

0からnまで2ずつ増やしていきたいとき

for (i in 0..n step 2) {
    // 処理
}

CollectionやArrayの添字をfor文で回すとき

val list = listOf(1, 2, 3, 4, 5)
for (i in list.indices) {
    // 処理 
}

foreach

List

val list = listOf(1, 2, 3, 4, 5)
for (str in list) {
    // 処理
}

Map

val map = mapOf(1 to "one", 2 to "two")
for ((key, value) in map) {
     // 処理
}

その他

値が範囲内かどうか

val n = 10
val min = 0
val max =100
if (n in min..max) {
    // 処理
}

多次元配列の作成

val array = Array(9) {
    IntArray(9)
}

参考文献

https://ikkun2501.hatenablog.com/entry/2019/11/01/205553