From 9df333a649c545466e3266abddc019f33756510a Mon Sep 17 00:00:00 2001 From: "jjehdud@naver.com" Date: Wed, 1 Nov 2023 22:14:21 +0900 Subject: [PATCH 1/4] input car name --- docs/README.md | 15 +++++++++++++++ src/main/kotlin/racingcar/Application.kt | 15 +++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/docs/README.md b/docs/README.md index e69de29bb..835ee772c 100644 --- a/docs/README.md +++ b/docs/README.md @@ -0,0 +1,15 @@ +##기능 목록 + +* 전진하는 조건은 0~9사이의 숫자를 구한 후 4 이상일 경우 전진, 4미만일 경우 정지 + * camp.nextstep.edu.missionutils.Randoms의 pickNumberInRange()를 활용한다. +* 자동차 이름 입력 후 횟수 입력 + * camp.nextstep.edu.missionutils.Console의 readLine()을 활용한다. + * 자동차 이름은 5자 이하만 사용가능 + * 쉼표로 구분(글자와 쉼표를 붙여서 사용) + * 횟수 입력(숫자만 사용 가능) + + * 전진 횟수가 가장 많은 차량이 우승 - 출력 이름 + * 여러 대 일수도 있음 + * 출력도 쉼표로 구분(쉼표 이후 공백 한칸) + * indent depth는 최대 2까지 허용 + * 함수 축소화 할껏 \ No newline at end of file diff --git a/src/main/kotlin/racingcar/Application.kt b/src/main/kotlin/racingcar/Application.kt index 0d8f3a79d..3ad29100a 100644 --- a/src/main/kotlin/racingcar/Application.kt +++ b/src/main/kotlin/racingcar/Application.kt @@ -1,5 +1,20 @@ package racingcar +import camp.nextstep.edu.missionutils.Randoms +import camp.nextstep.edu.missionutils.Console +import java.lang.IllegalArgumentException + +fun f_input_car_name() :List { + println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분") + var input_car_name = Console.readLine() + var car_name_list = input_car_name.split(",") + for(i in 0..car_name_list.size - 1) { + if(car_name_list[i].length > 6) throw IllegalArgumentException() + } + return car_name_list +} + fun main() { // TODO: 프로그램 구현 + var car_name_list = f_input_car_name() } From e0399e76b06cc7bbba1ad5affce0cfdefbe3760f Mon Sep 17 00:00:00 2001 From: "jjehdud@naver.com" Date: Wed, 1 Nov 2023 22:42:45 +0900 Subject: [PATCH 2/4] Modification required --- src/main/kotlin/racingcar/Application.kt | 49 +++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/racingcar/Application.kt b/src/main/kotlin/racingcar/Application.kt index 3ad29100a..61176c7fc 100644 --- a/src/main/kotlin/racingcar/Application.kt +++ b/src/main/kotlin/racingcar/Application.kt @@ -14,7 +14,54 @@ fun f_input_car_name() :List { return car_name_list } +fun f_try_number() : Int { + println("시도할 횟수는 몇 회인가요?") + try { + var try_number = Console.readLine().toInt() + return try_number + }catch (e : IllegalArgumentException) { + return -1 + } +} + +fun racing_garme(car_name_list : List, try_number : Int) { + println("실행 결과") + var forward_list : ArrayList = arrayListOf() + for(i in 0..car_name_list.size - 1) { + forward_list.add(0) + } + for (k in 0 .. try_number) { + for (i in 0..car_name_list.size - 1) { + var random_number = Randoms.pickNumberInRange(0, 9) + if(random_number >= 4 ) forward_list[i]++ + print(car_name_list[i] + " : ") + for(j in 0 .. forward_list[i] - 1) { + print("-") + } + println() + println() + } + } + var max_forward = 0 + for(i in 0 .. car_name_list.size - 1) { + if(max_forward < forward_list[i]) { + max_forward = forward_list[i] + } + } + var winner : ArrayList = ArrayList() + for (i in 0 .. car_name_list.size - 1) { + if(max_forward == forward_list[i]) { + winner.add(car_name_list[i]) + } + } + print(winner.joinToString { "," }) +} + fun main() { // TODO: 프로그램 구현 var car_name_list = f_input_car_name() -} + + var try_number = f_try_number() + + racing_garme(car_name_list, try_number) +} \ No newline at end of file From 479c9ffc4dd3fbfe008088b950b71a52f5384255 Mon Sep 17 00:00:00 2001 From: "jjehdud@naver.com" Date: Wed, 1 Nov 2023 23:13:58 +0900 Subject: [PATCH 3/4] Modification completed about exception and ApplicationTest --- src/main/kotlin/racingcar/Application.kt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/racingcar/Application.kt b/src/main/kotlin/racingcar/Application.kt index 61176c7fc..18768cec4 100644 --- a/src/main/kotlin/racingcar/Application.kt +++ b/src/main/kotlin/racingcar/Application.kt @@ -9,7 +9,7 @@ fun f_input_car_name() :List { var input_car_name = Console.readLine() var car_name_list = input_car_name.split(",") for(i in 0..car_name_list.size - 1) { - if(car_name_list[i].length > 6) throw IllegalArgumentException() + if(car_name_list[i].length >= 6) throw IllegalArgumentException() } return car_name_list } @@ -20,7 +20,7 @@ fun f_try_number() : Int { var try_number = Console.readLine().toInt() return try_number }catch (e : IllegalArgumentException) { - return -1 + return throw e } } @@ -39,8 +39,8 @@ fun racing_garme(car_name_list : List, try_number : Int) { print("-") } println() - println() } + println() } var max_forward = 0 for(i in 0 .. car_name_list.size - 1) { @@ -54,7 +54,8 @@ fun racing_garme(car_name_list : List, try_number : Int) { winner.add(car_name_list[i]) } } - print(winner.joinToString { "," }) + print("최종 우승자 : ") + print(winner.joinToString(", ")) } fun main() { From fa1d35d517230e82768bd7ee9b817407392e1f5c Mon Sep 17 00:00:00 2001 From: "jjehdud@naver.com" Date: Wed, 1 Nov 2023 23:22:28 +0900 Subject: [PATCH 4/4] Fixed misstake about import --- src/main/kotlin/racingcar/Application.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/kotlin/racingcar/Application.kt b/src/main/kotlin/racingcar/Application.kt index 18768cec4..7f7a5753a 100644 --- a/src/main/kotlin/racingcar/Application.kt +++ b/src/main/kotlin/racingcar/Application.kt @@ -2,7 +2,6 @@ package racingcar import camp.nextstep.edu.missionutils.Randoms import camp.nextstep.edu.missionutils.Console -import java.lang.IllegalArgumentException fun f_input_car_name() :List { println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분")