Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[로또] 주성원 미션 제출합니다. #100

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,8 @@ out/

### Mac OS ###
.DS_Store


*.class
.metadata/
/local.properties
10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1 +1,11 @@
# kotlin-lotto-precourse
간단한 로또 발매기를 구현한다.

1. 로또 구입 금액을 입력받는 기능
2. 발행한 로또 수량 및 번호를 출력하는 기능
3. 당첨번호를 입력받는 기능
4. 보너스 번호를 입력받는 기능
5. 당첨 통계를 출력하는 기능
- 발행한 로또번호와 입력한 당첨번호 일치를 확인하는 기능
-
6. 사용자가 잘못된 값을 입력할 경우 오류를 출력하는 기능
56 changes: 55 additions & 1 deletion src/main/kotlin/lotto/Application.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,59 @@
// Main.kt 파일 수정
package lotto

import camp.nextstep.edu.missionutils.Console
import camp.nextstep.edu.missionutils.Randoms

fun main() {
// TODO: 프로그램 구현
println("구입금액을 입력해 주세요.")
val inputPrice = getUserInput()
val lottoCount = purchasedLotto(inputPrice)
println()
println("${lottoCount}개를 구매했습니다.")

val randomNumbers = randomNumberResult(lottoCount)

println()
println("당첨 번호를 입력해 주세요.")
val winningNumber = getWinningNumbers()
println()
println("보너스 번호를 입력해 주세요.")
val bonusNumber = getBonusNumber()

val matchNumbers = checkWinningNumber(randomNumbers, winningNumber)


}

private fun getUserInput(): String = Console.readLine()

private fun purchasedLotto(inputPrice: String): Int = inputPrice.toInt() / 1000

private fun randomNumberResult(lottoCount: Int): List<List<Int>> {
val lottoNumbers = mutableListOf<List<Int>>()
repeat(lottoCount) {
val lottoNumber = Randoms.pickUniqueNumbersInRange(1, 45, 6)
println(lottoNumber)
lottoNumbers.add(lottoNumber)
}
return lottoNumbers
}

private fun getWinningNumbers(): List<Int> {
val winningNumber = getUserInput()
return winningNumber.split(",").map { it.trim().toInt() }
}

private fun checkWinningNumber(randomNumbers: List<List<Int>>, winningNumbers: List<Int>): List<Int>{
val resultNumber = mutableListOf<Int>()
randomNumbers.forEach{ randomNumber ->
val matchCount = Lotto(randomNumber).matchCount(winningNumbers)
if(matchCount >= 5){

}
}
println(resultNumber)
return resultNumber
}

private fun getBonusNumber(): Int = getUserInput().toInt()
11 changes: 9 additions & 2 deletions src/main/kotlin/lotto/Lotto.kt
Original file line number Diff line number Diff line change
@@ -1,9 +1,16 @@
package lotto

// numbers : 입력받은 로또 번호
class Lotto(private val numbers: List<Int>) {
init {
require(numbers.size == 6) { "[ERROR] 로또 번호는 6개여야 합니다." }
require(numbers.all { it in 1..45 }) { "[ERROR] 로또 번호는 1부터 45 사이의 숫자여야 합니다." }
require(numbers.distinct().size == 6) { "[ERROR] 로또 번호는 중복되지 않아야 합니다." }
}

// TODO: 추가 기능 구현
}
// 번호 일치 개수 반환
fun matchCount(winningNumbers: List<Int>): Int {
return numbers.count { it in winningNumbers }
}

}
9 changes: 9 additions & 0 deletions src/main/kotlin/lotto/LottoRank.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package lotto

enum class LottoRank(val price: Int, val count: Int, val rank: String) {
FIRST(2000000000, 6, "1등"),
SECOND(30000000, 5, "2등"),
THIRD(1500000, 5, "3등"),
FOURTH(50000, 4, "4등"),
FIFTH(5000, 3, "5등"),
}