Zum Hauptinhalt springen

🔀 조건문

📖 조건문이란?

조건문은 상황에 따라 다른 코드를 실행합니다. "만약 ~라면"의 논리를 코드로 표현합니다.

💡 if 문

기본 사용법

fun main() {
val age = 20

if (age >= 18) {
println("성인입니다")
}
// 출력: 성인입니다
}

if-else

fun main() {
val score = 75

if (score >= 80) {
println("합격입니다!")
} else {
println("불합격입니다.")
}
// 출력: 불합격입니다.
}

if-else if-else

fun main() {
val score = 85

if (score >= 90) {
println("A학점")
} else if (score >= 80) {
println("B학점")
} else if (score >= 70) {
println("C학점")
} else {
println("F학점")
}
// 출력: B학점
}

🎨 if는 표현식

Kotlin의 if는 값을 반환할 수 있습니다!

fun main() {
val age = 20

// if를 표현식으로 사용
val message = if (age >= 18) {
"성인입니다"
} else {
"미성년자입니다"
}

println(message) // 성인입니다

// 한 줄로도 가능
val status = if (age >= 18) "성인" else "미성년자"
println(status) // 성인
}

🌟 when 문

기본 사용법

fun main() {
val grade = 'B'

when (grade) {
'A' -> println("최고예요!")
'B' -> println("좋아요!")
'C' -> println("괜찮아요")
'D' -> println("노력하세요")
'F' -> println("재수강하세요")
else -> println("알 수 없는 학점")
}
// 출력: 좋아요!
}

when도 표현식

fun main() {
val grade = 'B'

val message = when (grade) {
'A' -> "최고예요!"
'B' -> "좋아요!"
'C' -> "괜찮아요"
else -> "노력하세요"
}

println(message) // 좋아요!
}

여러 값 매칭

fun main() {
val day = 6

val dayType = when (day) {
1, 2, 3, 4, 5 -> "평일"
6, 7 -> "주말"
else -> "잘못된 요일"
}

println(dayType) // 주말
}

범위로 매칭

fun main() {
val score = 85

val grade = when (score) {
in 90..100 -> "A"
in 80..89 -> "B"
in 70..79 -> "C"
in 60..69 -> "D"
else -> "F"
}

println("학점: $grade") // 학점: B
}

조건식으로 매칭

fun main() {
val temperature = 25

val weather = when {
temperature < 0 -> "매우 춥습니다"
temperature < 10 -> "춥습니다"
temperature < 20 -> "시원합니다"
temperature < 30 -> "따뜻합니다"
else -> "덥습니다"
}

println(weather) // 따뜻합니다
}

타입 체크

fun main() {
val value: Any = "Hello"

when (value) {
is String -> println("문자열: $value")
is Int -> println("정수: $value")
is Boolean -> println("불리언: $value")
else -> println("알 수 없는 타입")
}
// 출력: 문자열: Hello
}

🆚 if vs when

언제 뭘 쓸까?

// ✅ 2-3가지 분기 → if
fun main() {
val age = 20

if (age >= 18) {
println("성인")
} else {
println("미성년자")
}
}

// ✅ 여러 분기 → when
fun main() {
val grade = 'B'

when (grade) {
'A' -> println("최고")
'B' -> println("좋음")
'C' -> println("보통")
'D' -> println("나쁨")
'F' -> println("매우 나쁨")
}
}

🎯 실전 예제

BMI 판정

fun main() {
val height = 1.75 // 미터
val weight = 70.0 // kg

val bmi = weight / (height * height)

val result = when {
bmi < 18.5 -> "저체중"
bmi < 23.0 -> "정상"
bmi < 25.0 -> "과체중"
bmi < 30.0 -> "비만"
else -> "고도비만"
}

println("BMI: %.1f → $result".format(bmi))
}

계절 판별

fun main() {
val month = 7

val season = when (month) {
in 3..5 -> "봄"
in 6..8 -> "여름"
in 9..11 -> "가을"
12, 1, 2 -> "겨울"
else -> "잘못된 월"
}

println("${month}월은 ${season}입니다")
// 출력: 7월은 여름입니다
}

홀짝 게임

fun main() {
val number = (1..100).random()

val result = if (number % 2 == 0) {
"짝수"
} else {
"홀수"
}

println("랜덤 숫자: $number$result")
}

로그인 검증

fun main() {
val username = "admin"
val password = "1234"

if (username == "admin" && password == "1234") {
println("로그인 성공!")
} else if (username != "admin") {
println("아이디를 확인하세요")
} else {
println("비밀번호를 확인하세요")
}
}

🤔 자주 묻는 질문

Q1. if 없이 when만 써도 되나요?

A: 네! when이 더 강력합니다.

fun main() {
val score = 85

// if 방식
val grade1 = if (score >= 90) "A"
else if (score >= 80) "B"
else if (score >= 70) "C"
else "F"

// when 방식 (더 깔끔!)
val grade2 = when {
score >= 90 -> "A"
score >= 80 -> "B"
score >= 70 -> "C"
else -> "F"
}
}

Q2. when에서 else는 필수인가요?

A: 표현식으로 쓸 때는 필수입니다!

fun main() {
val grade = 'B'

// ✅ 표현식 - else 필수
val message = when (grade) {
'A' -> "최고"
'B' -> "좋음"
else -> "기타" // 필수!
}

// ✅ 문장 - else 선택
when (grade) {
'A' -> println("최고")
'B' -> println("좋음")
// else 생략 가능
}
}

Q3. 중괄호는 언제 쓰나요?

A: 여러 줄 코드가 있을 때!

fun main() {
val score = 95

if (score >= 90) {
println("축하합니다!")
println("A학점입니다!")
println("장학금 대상입니다!")
}

// 한 줄이면 생략 가능
if (score >= 90) println("A학점")
}

🎬 마치며

조건문으로 프로그램에 지능을 부여하세요!

핵심 정리:
✅ if-else - 2-3가지 분기
✅ when - 여러 분기 (더 강력!)
✅ if와 when 모두 표현식으로 사용 가능
✅ 범위, 타입, 조건식 다양하게 활용

다음 단계: 반복문에서 for와 while을 알아보세요!