[Kotlin] 3. 별 찍기

Delight Yoon·2022년 9월 22일
0

Kotlin

목록 보기
3/6

이 전 시간에 배웠던 Kotlin Loop문(for, while)을 통해 별 찍기를 해보는 시간을 가지려고 한다.

📌 별 찍기 - 1

for~each ? 🤔

import java.util.Scanner

/*
줄의 수를 입력하시오 > 9
 *****************
  ***************
   *************
    ***********
     *********
      *******
       *****
        ***
         *
 */

fun main() {
    print("줄의 수를 입력하시오 > ")
    val number = Scanner(System.`in`).nextInt()

    // for ~ each
    for( line in 1..number ) {
        // 공백 출력 for문
        for( i in 1..line) {
            print(" ")
        }

        // 별 모양(*) 출력 for 문
        for( i in 1 ..2 * (number-line) + 1  ) {
            print('*')
        }

        println()   // 줄 바꿈
    }
   
}

while ? 🤔

import java.util.Scanner

/*
줄의 수를 입력하시오 > 9
 *****************
  ***************
   *************
    ***********
     *********
      *******
       *****
        ***
         *
 */

fun main() {
    print("줄의 수를 입력하시오 > ")
    val number = Scanner(System.`in`).nextInt()

    // while
    var line = 1
    while( line <= number ) {

        var empty = 1
        while ( empty <= line ) {
            print(" ")
            empty++
        }

        var star = 1
        while ( star <= 2 * (number - line) + 1 ) {
            print("*")
            star++
        }

        println()   // 줄 바꿈
        line++
    }
   
}

📌 별 찍기 - 2

for~each ? 🤔

import java.util.Scanner
/*
줄의 수를 입력하시오 > 9
        *
       ***
      *****
     *******
    *********
   ***********
  *************
 ***************
*****************
 */
fun main() {
    print("줄의 수를 입력하시오 > ")
    val number = Scanner(System.`in`).nextInt()

    // for ~ each
    for( line in 1..number ) {
        // 공백 number - 1 .. 0
        // 공백 출력 for문
        for( i in number - line downTo 1 ) {
            print(" ")
        }

        // 별 모양(*) 출력 for 문
        // 1 3 5 7 9 ... 2 * number-line + 1
        for( i in 1 until 2 * line  ) {
            print('*')
        }

        println()   // 줄 바꿈
    }
}

while ? 🤔

import java.util.Scanner
/*
줄의 수를 입력하시오 > 9
        *
       ***
      *****
     *******
    *********
   ***********
  *************
 ***************
*****************
 */
fun main() {
    print("줄의 수를 입력하시오 > ")
    val number = Scanner(System.`in`).nextInt()

    // while
    var line = 1
    while( line <= number ) {

        var empty = number - line
        while ( empty > 0 ) {
            print(" ")
            empty--
        }

        var star = 1
        while ( star < 2 * line ) {
            print("*")
            star++
        }

        println()   // 줄 바꿈
        line++
    }
}

📌 별 찍기 - 3

for~each ? 🤔

import java.util.*
/*
        *
       ***
      *****
     *******
    *********
   ***********
  *************
 ***************
*****************
 ***************
  *************
   ***********
    *********
     *******
      *****
       ***
        *
 */


// 별 찍기 1 + 2
fun main() {

    print("줄의 수를 입력하시오 > ")
    val number = Scanner(System.`in`).nextInt()

    // for ~ each
    for( line in 1..number ) {
        // 공백 출력 for문
        for( i in 1.. number - line ) {
            print(" ")
        }

        // 별 모양(*) 출력 for 문
        for( i in 1 until 2 * line  ) {
            print('*')
        }

        println()   // 줄 바꿈
    }

    for( line in 1 until number ) {
        // 공백 출력 for문
        for( i in 1..line) {
            print(" ")
        }

        // 별 모양(*) 출력 for 문
        for( i in 1 until 2*(number-line)  ) {
            print('*')
        }

        println()   // 줄 바꿈
    }
}

while ? 🤔

import java.util.*
/*
        *
       ***
      *****
     *******
    *********
   ***********
  *************
 ***************
*****************
 ***************
  *************
   ***********
    *********
     *******
      *****
       ***
        *
 */


// 별 찍기 1 + 2
fun main() {

    print("줄의 수를 입력하시오 > ")
    val number = Scanner(System.`in`).nextInt()

    // while
    // 1 ~ number 번 째 line : 증가하는 별 찍기
    var line = 1
    while ( line <= number ) {
        // 공백 찍기
        var empty = 1
        while ( empty <= number - line ) {
            print(" ")
            empty++
        }

        // 별 찍기
        var star = 1
        while( star < 2 * line ) {
            print("*")
            star++
        }

        println()
        line++
    }

    // number + 1 번째 ~ ( 2 * number ) - 1 : 감소하는 별 찍기
    var line2 = 1
    while ( line2 < number ) {
        // 공백 찍기
        var empty = 1
        while ( empty <= line2 ) {
            print(" ")
            empty++
        }

        // 별 찍기
        // number + 1 번째 라인부터 별의 개수는 (2 * (number-1) -1)개 에서 1개까지 2개씩 줄어간다.
        var star = 1
        while ( star <= 2 * ( number - 1 - line2 ) + 1 ) {
            print("*")
            star++
        }

        println()   // 줄 바꿈
        line2++
    }
}
profile
Yoon's Dev Blog

0개의 댓글