Kotlin 코딩테스트 문법 시리즈 ③ : 입출력 & 조건문 & 반복문 정리

2025. 7. 3. 01:22·Code Odyssey

✅ 이 문서는 Kotlin의 입력/출력, 조건문, 반복문을 빨리 활용할 수 있도록 정리한 문법입니다. Java, Python 유경험자라면 바로 매칭됩니다.


📥 입력

🔹 기본 입력

val line = readLine()!!
val (a, b) = readLine()!!.split(" ").map { it.toInt() }
  • readLine() : 한 줄 입력
  • !! : null 아님 단언 (코테에선 대부분 사용)
  • split() : 문자열 분할 → List
  • map { it.toInt() } : 문자열 리스트를 정수형으로 변환

🔹 빠른 입력 (BufferedReader)

import java.io.*

val br = BufferedReader(InputStreamReader(System.`in`))
val line = br.readLine()!!
val nums = line.split(" ").map { it.toInt() }
  • 여러 줄 입력 시 필수 (백준 등에서 시간 초과 방지)

📤 출력

🔹 기본 출력

println("Hello")    // 줄 바꿈 O
print("Hi")         // 줄 바꿈 X

🔹 빠른 출력 (BufferedWriter)

val bw = BufferedWriter(OutputStreamWriter(System.out))
bw.write("출력 내용\n")
bw.flush()
bw.close()

✅ 실전 예시: 입력 받아 합 출력

val (a, b) = readLine()!!.split(" ").map { it.toInt() }
println(a + b)

🔍 조건문

🔹 if 문

val x = 5

if (x > 0) {
    println("positive")
} else if (x == 0) {
    println("zero")
} else {
    println("negative")
}

🔹 if 표현식 (삼항 연산자 대체)

val max = if (a > b) a else b

🔹 when 문 (Java의 switch 대체)

val grade = 'A'

when (grade) {
    'A' -> println("Excellent")
    'B' -> println("Good")
    else -> println("Try harder")
}
  • when은 값 뿐 아니라 조건도 가능
when {
    x > 0 -> println("positive")
    x == 0 -> println("zero")
    else -> println("negative")
}

🔁 반복문

🔹 for 문 (범위 기반)

for (i in 0 until 5) {      // 0~4
    println(i)
}

for (i in 1..5) {           // 1~5
    println(i)
}

for (i in 5 downTo 1) {     // 5~1
    println(i)
}

for (i in 0 until 10 step 2) {  // 0, 2, 4, 6, 8
    println(i)
}

🔹 for-each 문 (List, String 등 순회)

val list = listOf(1, 2, 3)
for (num in list) println(num)

val str = "Kotlin"
for (ch in str) println(ch)

🔹 repeat(n)

repeat(3) {
    println("Hello")  // 3번 반복
}

🔹 while, do-while

var x = 3
while (x > 0) {
    println(x)
    x--
}

do {
    println(x)
    x++
} while (x < 3)

🔹 실전 입력 패턴 추가 예시

🔸 N줄 숫자 입력

val n = readLine()!!.toInt()
val numbers = List(n) { readLine()!!.toInt() }

🔸 2차원 배열 입력

val (n, m) = readLine()!!.split(" ").map { it.toInt() }
val grid = Array(n) { readLine()!!.split(" ").map { it.toInt() }.toIntArray() }

🔹 when 표현식 (값 반환)

val grade = 'B'
val result = when (grade) {
    'A' -> "Excellent"
    'B' -> "Good"
    else -> "Try harder"
}
println(result)
  • when은 단순 조건 분기뿐 아니라 표현식으로 값 반환 가능

🔹 반복 제어: break, continue, return@label, 라벨 사용

🔸 기본 제어문

for (i in 0..4) {
    if (i == 2) continue  // 2 건너뛰기
    if (i == 4) break     // 반복 종료
    println(i)
}

🔸 return@repeat 예시

repeat(5) {
    if (it == 2) return@repeat  // repeat 블록의 현재 반복만 건너뜀 (== continue)
    println("$it 실행")
}
  • return@label은 Java의 라벨 break와 유사한 Kotlin의 표현식 제어 방식
  • return@repeat는 현재 반복을 건너뛰고 다음 반복으로 넘어감 → 즉 continue 역할
  • return은 함수 자체 종료, return@X는 해당 블록만 탈출

🔸 return@run 예시

val result = run {
    for (i in 1..5) {
        if (i == 3) return@run "조기 종료: $i"
    }
    "정상 종료"
}
println(result)  // "조기 종료: 3"
  • return@run은 람다 표현식 블록(run, let 등) 조기 종료 시 사용

🔸 라벨을 붙인 반복문 탈출 (중첩 루프에서 break 정확히 적용)

outer@for (i in 1..3) {
    for (j in 1..3) {
        if (i * j == 4) break@outer  // 바깥 루프까지 탈출
        println("$i $j")
    }
}
  • break@label, continue@label은 중첩 루프에서 정확한 위치 제어에 사용
  • return@label은 Java의 라벨 break와 유사한 Kotlin의 표현식 제어 방식
  • return@repeat는 현재 반복을 건너뛰고 다음 반복으로 넘어감 → 즉 continue 역할
  • return은 함수 자체 종료, return@X는 해당 블록만 탈출
상황 Kotlin 문법 작동 방식 Java 유사 동작 비고
repeat return@repeat 다음 반복으로 진행 continue 반복 람다
forEach, map, 등 return@forEach 현재 항목만 건너뜀 continue 반복 람다
run, apply 등 return@run 람다 전체 종료 return or break 람다 종료

✅ 요약 정리

  • 입력: readLine()!!, split(" ").map { it.toInt() }
  • 출력: println(), 고속은 BufferedWriter
  • 조건문: if, if 표현식, when으로 switch 대체
  • 반복문: for, while, repeat, for (x in collection)
  • 코테에서는 repeat, until, downTo, step 많이 사용

다음은 시리즈 ④: 배열(Array) 정리로 이어집니다.

'Code Odyssey' 카테고리의 다른 글

Kotlin 코딩테스트 문법 시리즈 ⑤ : 리스트(List) 정리  (0) 2025.07.05
Kotlin 코딩테스트 문법 시리즈 ④ : 배열(Array) 정리  (1) 2025.07.04
Kotlin 코딩테스트 문법 시리즈 ② : 문자열 (String)  (1) 2025.07.02
Kotlin 코딩테스트 문법 시리즈 ① : 기본 자료형 & 변수  (0) 2025.07.01
Map<String, Integer> dp 는 시간초과가 나는 이유 : 프로그래머스 - 사칙연산  (1) 2025.06.11
'Code Odyssey' 카테고리의 다른 글
  • Kotlin 코딩테스트 문법 시리즈 ⑤ : 리스트(List) 정리
  • Kotlin 코딩테스트 문법 시리즈 ④ : 배열(Array) 정리
  • Kotlin 코딩테스트 문법 시리즈 ② : 문자열 (String)
  • Kotlin 코딩테스트 문법 시리즈 ① : 기본 자료형 & 변수
Celion
Celion
오늘도 평소처럼 화이팅!
  • Celion
    Orion Log
    Celion
  • 전체
    오늘
    어제
    • 전체 글 (144)
      • Uncompiled Thoughts (8)
        • 네이버 부스트캠프 10기 (5)
      • CS 기초부터 한 걸음씩 (34)
      • Code Odyssey (22)
      • Algorithm (77)
        • Coding Test Records (63)
      • Git (3)
      • reference (0)
  • 블로그 메뉴

    • 태그
    • 방명록
  • 태그

    프로그래머스
    Kotlin
    문법정리
    Level2
    java
    백준
    알고리즘고득점kit
    boostcamp
    Level3
    시뮬레이션
    greedy
    코테
  • 최근 글

  • 인기 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.4
Celion
Kotlin 코딩테스트 문법 시리즈 ③ : 입출력 & 조건문 & 반복문 정리
상단으로

티스토리툴바