๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ป Extracurricular/์ฝ”๋ฎค๋‹ˆํ‹ฐ ๋ชจ๊ฐ์ฝ”

๋ชจ๊ฐ์ฝ” < Kotlin ๊ธฐ์ดˆํŽธ > - 8์ผ์ฐจ

โœ… ์ฝ”ํ‹€๋ฆฐ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ฌธ๋ฒ• ๋ฐฐ์šฐ๊ธฐ

โšก ์ฝ”ํ‹€๋ฆฐ์—์„œ ํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ

ํ•จ์ˆ˜๋ž€?

  • ํŠน์ • ์ž…๋ ฅ ๊ฐ’์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ ๊ฐ’์„ ๋ฐ˜ํ™˜
  • ์ฝ”ํ‹€๋ฆฐ์—์„œ์˜ ํ•จ์ˆ˜๋Š” ์•„๋ž˜์˜ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉ
fun ํ•จ์ˆ˜์ด๋ฆ„(์ž…๋ ฅ๊ฐ’) {
  ํ•จ์ˆ˜ ๋‚ด์šฉ
	return ๋ฐ˜ํ™˜๊ฐ’
}

return ์ด ๋ฐ˜ํ™˜ํ•œ๋‹ค๋Š” ๋œป!

 

โšก ์ฝ”ํ‹€๋ฆฐ์—์„œ ์กฐ๊ฑด๋ฌธ ์‚ฌ์šฉํ•˜๊ธฐ

์กฐ๊ฑด๋ฌธ์ด๋ž€?

ํŠน์ • ์กฐ๊ฑด์ผ ๋•Œ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋„๋ก ์„ค์ •ํ•˜๋Š” ๊ฒƒ

 

if(์กฐ๊ฑด๋ฌธ){

}

์กฐ๊ฑด๋ฌธ์ด ์ฐธ์ด๋ผ๋ฉด ํ•ด๋‹น {} ์•ˆ์˜ ๋ช…๋ น์„ ์‹คํ–‰!

if ( n <= 10 ) { 
	A 
} else if ( n <= 20  ) {
  B
} else {
  C
}

๐Ÿ‘€ ์ฝ”๋“œ ํ•ด์„

  • n์ด 10๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์„ ๋•Œ A ์ฝ”๋“œ ์‹คํ–‰ (n์ด 10 ์ดํ•˜์ผ ๋•Œ)
  • ๊ทธ๊ฒŒ ์•„๋‹ˆ๋ผ n์ด 20๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์„ ๋•Œ B ์‹คํ–‰ (n์ด 10 ์ดˆ๊ณผ 20 ์ดํ•˜์ผ ๋•Œ)
  • ๊ทธ๊ฒŒ ์•„๋‹ˆ๋ผ๋ฉด C ์‹คํ–‰ (n์ด 20 ์ดˆ๊ณผ)

 

โšก ์ฝ”ํ‹€๋ฆฐ์—์„œ ๋ฐฐ์—ด ์‚ฌ์šฉํ•˜๊ธฐ

// ์ •์ˆ˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋นˆ ๋ฐฐ์—ด ๋งŒ๋“ค๊ธฐ
val numbers = arrayListOf<Int>() 

// array์— ์ˆซ์ž(num) ์ถ”๊ฐ€
numbers.add(num)

// array์˜ ๋ชจ๋“  ์ˆซ์ž ์‚ญ์ œ
numbers.clear()

// array ์•ˆ์— ์ˆซ์ž(num)๊ฐ€ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ์ฒดํฌํ•˜๊ธฐ
numbers.contains(num) // ์žˆ์œผ๋ฉด True, ์—†์œผ๋ฉด False

 

โšก ์ฝ”ํ‹€๋ฆฐ์—์„œ ๋ฐ˜๋ณต๋ฌธ ์‚ฌ์šฉํ•˜๊ธฐ

// ์กฐ๊ฑด์ด ์ฐธ์ผ ๊ฒฝ์šฐ A ๋ถ€๋ถ„ ์‹คํ–‰
while ( ์กฐ๊ฑด ) { 
  A 
}

// ๋ฌดํ•œ ๋ฐ˜๋ณต์ด๋˜, if ์•ˆ์˜ ์กฐ๊ฑด์ด ์ฐธ์ผ ๊ฒฝ์šฐ ๋ฐ˜๋ณต๋ฌธ์„ ๋น ์ ธ๋‚˜์˜จ๋‹ค.
while (true) {
	if ( ์กฐ๊ฑด ) {
	  break
	}
}

โœ… ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ๋žœ๋ค ์ˆซ์ž ๋ฝ‘๊ธฐ

๐Ÿ‘€ ์ฝ”๋“œ

class MainActivity : AppCompatActivity() {
    val random = Random() // ๋žœ๋ค๊ฐ’์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ ์–ธ

	override fun onCreate(savedInstanceState: Bundle?) {
	    super.onCreate(savedInstanceState)
	    setContentView(R.layout.activity_main)
	
        // 6๊ฐœ์˜ ๋ฒˆํ˜ธ ๋ณ€์ˆ˜ ์„ ์–ธ
	    val num1 = findViewById<Button>(R.id.lottoNum1)
	    val num2 = findViewById<Button>(R.id.lottoNum2)
	    val num3 = findViewById<Button>(R.id.lottoNum3)
	    val num4 = findViewById<Button>(R.id.lottoNum4)
	    val num5 = findViewById<Button>(R.id.lottoNum5)
	    val num6 = findViewById<Button>(R.id.lottoNum6)

	    findViewById<FloatingActionButton>(R.id.runButton).setOnClickListener {
	        setLottoNum(num1)
	        setLottoNum(num2)
	        setLottoNum(num3)
	        setLottoNum(num4)
	        setLottoNum(num5)
	        setLottoNum(num6)
	    }
	}
	
	fun setLottoNum(lottoNum: Button) {
	    lottoNum.text = "${random.nextInt(45) + 1}"
	    lottoNum.backgroundTintList = ColorStateList.valueOf(Color.rgb(86, 88, 88))
	}
}

๐Ÿ‘€ ๊ฒฐ๊ณผ ๋ณด๊ธฐ

โšก ์ฝ”๋“œ ํ•ด์„

1๏ธโƒฃ private val random = Random()

  • ๋žœ๋ค๊ฐ’์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฏธ๋ฆฌ ๋ณ€์ˆ˜ ์„ ์–ธ
  • random.nextInt(์ˆซ์ž) ๋กœ ๋žœ๋ค ๊ฐ’ ๋ฐ›๊ธฐ
  • ex) random.nextInt(5) -> 0~4 ์‚ฌ์ด์˜ ๋ฌด์ž‘์œ„ ์ •์ˆ˜ ๋ฐ˜ํ™˜

๋กœ๋˜ ๋ฒˆํ˜ธ๋Š” 1๋ถ€ํ„ฐ 45๊นŒ์ง€์˜ ๋žœ๋คํ•œ ์ •์ˆ˜์ด๋ฏ€๋กœ

random.nextInt(45) ์ฝ”๋“œ๋กœ 0~44 ์‚ฌ์ด์˜ ์ •์ˆ˜๋ฅผ ๋ฐ›์€ ํ›„

+1 ํ•ด์ฃผ์–ด 1~45 ์‚ฌ์ด์˜ ๋žœ๋คํ•œ ์ˆซ์ž๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Œ!

 

2๏ธโƒฃ setLottoNum()

  • setLottoNum ์ด๋ผ๋Š” ์ด๋ฆ„์˜ ํ•จ์ˆ˜ ํ˜ธ์ถœ
  • ์ด๋•Œ ๋ฐ˜๋“œ์‹œ Button ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ด„ํ˜ธ ์•ˆ์— ๋‹ด์•„์•ผ ํ•จ
  • num1 ~ num6 ์˜ ๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ๋‹ด์•„ ํ•จ์ˆ˜ ํ˜ธ์ถœ

 

3๏ธโƒฃ fun setLottoNum(lottoNum: Button) { }

  • setLottoNum ์ด๋ผ๋Š” ์ด๋ฆ„์˜ ํ•จ์ˆ˜ ์ƒ์„ฑ
  • ์ž…๋ ฅ ๊ฐ’ : Button ์ปดํฌ๋„ŒํŠธ - ์ž…๋ ฅ๋ฐ›์€ ์ปดํฌ๋„ŒํŠธ์— lottoNum์ด๋ผ๋Š” ์ด๋ฆ„ ์„ค์ •

 

4๏ธโƒฃ lottoNum.text=”${random.nextInt(45) + 1}”

  • lottoNum์˜ ํ…์ŠคํŠธ ๊ฐ’์„ ${random.nextInt(45) + 1}๋กœ ์„ค์ •
  • But, ํ…์ŠคํŠธ ์†์„ฑ์—๋Š” ์ˆซ์ž๋ฅผ ๋„ฃ์„ ์ˆ˜ ์—†์Œ!
  • ๋”ฐ๋ผ์„œ, ${ … } ๋ฅผ ํ†ตํ•ด ๋ฌธ์ž์ฒ˜๋Ÿผ ๋งŒ๋“ค์–ด ํ…์ŠคํŠธ ๊ฐ’์„ ์„ค์ •

 

5๏ธโƒฃ lottoNum.backgroundTintList = ColorStateList.valueOf(Color.rgb(88,88,88))

  • ์ž…๋ ฅ๋ฐ›์€ ์ปดํฌ๋„ŒํŠธ lottoNum์˜ ๋ฐฐ๊ฒฝ์ƒ‰์„ rgb(88,88,88)๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

โœ… ๋ฌธ์ œ์  ๋ฐœ์ƒ!

โšก ๋ฐฐ๊ฒฝ์ƒ‰์ด ๋ฐ”๋€Œ์ง€ ์•Š์Œ

๋กœ๋˜๋Š” ์ˆซ์ž์˜ ๋ฒ”์œ„์— ๋”ฐ๋ผ ์ƒ‰๊น”์ด ๋ฐ”๋€Œ์–ด์•ผ ํ•˜๋Š”๋ฐ ๋ฐ”๋€Œ์งˆ ์•Š์Œ

 

๐Ÿ‘€ ๋กœ๋˜ ๋ฒˆํ˜ธ ์ƒ‰๊น”

1~10์€ ๋…ธ๋ž€์ƒ‰,

11~20์€ ํŒŒ๋ž€์ƒ‰,

21~30์€ ๋นจ๊ฐ„์ƒ‰,

31~40์€ ํšŒ์ƒ‰,

41~45๋Š” ์ดˆ๋ก์ƒ‰

=> ์กฐ๊ฑด๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ํ•ด๊ฒฐ

 

โšก ์ˆซ์ž๊ฐ€ ๊ฒน์น  ์ˆ˜ ์žˆ์Œ

๋กœ๋˜ ๋ฒˆํ˜ธ๋Š” ๋ชจ๋‘ ๋‹ค๋ฅธ ์ˆซ์ž์ด๊ธฐ ๋•Œ๋ฌธ์— ์ˆซ์ž๊ฐ€ ๊ฒน์น˜๋ฉด ์•ˆ๋จ

=> ๋ฐฐ์—ด๊ณผ ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด ํ•ด๊ฒฐ

 


โœ… ์˜ค๋Š˜์˜ ๋ฌธ์ œ : ๋กœ๋˜๋ฒˆํ˜ธ์ถ”์ฒจ์•ฑ ๊ธฐ๋Šฅ ์™„์„ฑํ•˜๊ธฐ

์šฐ์ธก ํ•˜๋‹จ์˜ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ ๋•Œ๋งˆ๋‹ค ๋žœ๋คํ•œ(๊ฒน์น˜์ง€ ์•Š๋Š”) ์ˆซ์ž 6๊ฐœ๊ฐ€ ํ‘œ์‹œ๋˜๊ณ ,

ํ•ด๋‹น ์ˆซ์ž์— ๋งž๋Š” ๋ฐฐ๊ฒฝ์ƒ‰์œผ๋กœ ๋ฐ”๋€Œ๋„๋ก ๋ณ€๊ฒฝํ•˜๊ธฐ

๐Ÿ‘€ MainActivity.kt

package com.example.lotto

import android.content.res.ColorStateList
import android.graphics.Color
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import com.google.android.material.floatingactionbutton.FloatingActionButton
import kotlin.random.Random

class MainActivity : AppCompatActivity() {
    private val random = Random(45) // ๋žœ๋ค๊ฐ’์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ ์–ธ
    private val numbers = arrayListOf<Int>() // ๋ฒˆํ˜ธ๋ฅผ ์ €์žฅํ•  ๋ฐฐ์—ด ์ƒ์„ฑ
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val num1 = findViewById<Button>(R.id.lottoNum1)
        val num2 = findViewById<Button>(R.id.lottoNum2)
        val num3 = findViewById<Button>(R.id.lottoNum3)
        val num4 = findViewById<Button>(R.id.lottoNum4)
        val num5 = findViewById<Button>(R.id.lottoNum5)
        val num6 = findViewById<Button>(R.id.lottoNum6)

        findViewById<FloatingActionButton>(R.id.floatingActionButton).setOnClickListener {
            numbers.clear() // ๋ชจ๋“  ์ˆซ์ž ์‚ญ์ œํ•˜๊ณ  ์‹œ์ž‘

            setLottoNum(num1)
            setLottoNum(num2)
            setLottoNum(num3)
            setLottoNum(num4)
            setLottoNum(num5)
            setLottoNum(num6)
        }
    }
    private fun setLottoNum(lottoNum: Button) {
        var num = 0
        while (true) {
            num = random.nextInt(45) + 1 // 0~44์ด๊ธฐ ๋•Œ๋ฌธ์— 1~45๋กœ ๋ณ€๊ฒฝ
            if ( !numbers.contains(num) ) {  // ๋งŒ์•ฝ ์ด์ „์— ๋‚˜์˜จ ๋ฒˆํ˜ธ์™€ ๊ฒน์น˜์ง€ ์•Š๋Š”๋‹ค๋ฉด
                numbers.add(num) // ๋ฒˆํ˜ธ ์ถ”๊ฐ€
                break
            }
        }

        lottoNum.text = "${num}" // ์ˆซ์ž๋ฅผ ๋ฌธ์ž๋กœ ๋ฐ”๊ฟ”์ฃผ๊ธฐ

        if ( num <= 10 ) { // 10๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด
            lottoNum.backgroundTintList = ColorStateList.valueOf(Color.rgb(255,194,0))
        } else if (num <= 20) { // 10๋ณด๋‹ค๋Š” ํฌ๊ณ  20๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด
            lottoNum.backgroundTintList = ColorStateList.valueOf(Color.rgb(0,0,255))
        } else if (num <= 30) { // 20๋ณด๋‹ค๋Š” ํฌ๊ณ  30๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด
            lottoNum.backgroundTintList = ColorStateList.valueOf(Color.rgb(245,33,34))
        } else if (num <= 40 ) { // 30๋ณด๋‹ค๋Š” ํฌ๊ณ  40๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด
            lottoNum.backgroundTintList = ColorStateList.valueOf(Color.rgb(128,128,128))
        } else { // 40๋ณด๋‹ค๋„ ํฌ๋‹ค๋ฉด
            lottoNum.backgroundTintList = ColorStateList.valueOf(Color.rgb(129,193,71))
        }
    }
}

๐Ÿ‘€ ์‹คํ–‰๊ฒฐ๊ณผ

https://codemate.kr/@guswlsdl04/๋ชจ๊ฐ์ฝ”-์ฝ”ํ‹€๋ฆฐ-๊ธฐ์ดˆํŽธ-8์ผ์ฐจ โ—€ CLICK HERE!