Joshbla 2023. 3. 23. 16:46

문제

 

https://www.acmicpc.net/problem/2438

 

2438번: 별 찍기 - 1

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제

www.acmicpc.net


풀이

Java

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int T = sc.nextInt();
    for (int i=1;i<=T;i++) {
        System.out.println("*".repeat(i));
    }
}

Kotlin

fun main() {
    val sc: Scanner = Scanner(System.`in`)
    val a = sc.nextInt()
    for (i in 1..a) {
        println("*".repeat(i))
    }
}

What's new ?

  • 코틀린에서의 반복문은 for(i 0..9)와 같이 표현한다. 여기서 i는 변수명이고 타입을 지정해주지 않아도 Int로설정된다.
    0부터 9까지 반복하겠다는 의미이다. 
  • 증가값을 특정 값으로 변경하여 진행하고 싶다면 step을 옵션으로 넣어주면 된다.
for (i in 1..9 step 2) {
    print("$i ")
}
/**출력: 1 3 5 7 9 */
  • 감소하는 for문을 만들고 싶다면 downTo를 사용하면 된다.
for (i in 9 downTo 1 step 2) {
    print("$i ")
}
/**출력: 9 7 5 3 1 */
  • 아래와 같이 다양하고 편하게 사용가능하다.
// char 반복
for (i in 'a' .. 'g') {
    print("$i ")
}
/**출력: a b c d e f g */

// collection 반복
val items = listOf("Apple","Banana","Coconut")
for (item in items) {
    print("$item ")
}
/**출력: Apple Banana Coconut *//
  • in을 사용하여 아래와 같은 체크도 가능하다.
val items = listOf("Apple","Banana","Coconut")
when {
    "kiwi" in items -> println("키위가 포함")
    "Apple" !in items -> println("사과가 미포함")
    "Apple" in items -> println("사과가 포함")
}

/**출력: 사과가 포함*/
  • 문자열과 숫자를 합쳐야할 때 코틀린은 좀더 편하게 사용이 가능하다.
// Java
String name = "ray";
int number = 1234;
System.out.println("차종류는 "+ name + "이고 차 번호는 " + number + "이다.");
System.out.printf("차종류는 %s이고 차 번호는 %d이다.",name,number);

// Kotiln
val name = "ray"
val number = 1234
println("차종류는  ${name}이고 차 번호는 ${number}이다.") 
// 변수명 뒤에 문자가 추가로 있을 때 괄호로 감싸주지 않으면 어디까지 변수명인지 모름

println("차번호: $number")
// 변수명 뒤에 문자가 추가로 없으면 괄호없이 사용가능