質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1822閲覧

とあるサイトのスキルチェックの問題について(Python3)

xJustinx

総合スコア2

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2021/04/02 15:15

とあるサイトのスキルチェックの問題で何度試しても結果が通らないのでぜひどこが不十分なのか、教えていただけると幸いです。コード提出前の動作チェックでは問題がエラーは出ないのですが、提出後のテスト(入力値などは不明)ではほとんどが通りません。いろんな部分を別の書き方などにしてみてやってみましたが全く変化なしです。結果が通っていないテストの入力値がわからないので不便ではあると思いますがよろしくお願いします。

###問題
あなたは今いる場所から X メートル離れた場所へ、 1 台のタクシーで移動しようとしています。
利用可能なタクシー N 台の料金のパラメータが与えられるので、タクシーで X メートル移動した際の最安値と最高値を計算してください。

例えば、 入力例 1 の場合は以下のように 600円 が最安値となり、 800円 が最高値となります。
1 番目のタクシーは初乗り距離以上なので加算距離 1 つ分が追加され 600円 かかります。
2 番目のタクシーは初乗り距離までで到着するので、初乗り運賃のみで 800円 かかります。

入力例1
2 700
600 200 200 400
900 800 400 500

出力例1
600 800

入力されるフォーマット:
N X
a_1 b_1 c_1 d_1
a_2 b_2 c_2 d_2
...
a_N b_N c_N d_N

出力のフォーマット:
P_1 P_2

・1 行目にタクシーの種類数 N、目的地までの距離 X がこの順に整数で半角スペース区切りで与えられます。
・2 行目から続く N 行には i 番目 (1 ≦ i ≦ N) のタクシーの 初乗り距離 a_i、 初乗り運賃 b_i、 加算距離 c_i、 加算運賃 d_i が整数でこの順にスペース区切りで与えられます。
・入力は合計 N + 1 行であり、最終行の末尾に改行が1つ入ります。

条件
すべてのテストケースにおいて、以下の条件をみたします。

・2 ≦ N ≦ 100
・1 ≦ X ≦ 100,000
・1 ≦ a_i, b_i, c_i, d_i ≦ 5,000 (1 ≦ i ≦ N)

エラーメッセージ: 出力結果が間違っています。

該当のソースコード

Python3

1def find_min_and_max(X, taxi): 2 min_and_max = [5000, 1] 3 for i in range(len(taxi)): 4 if taxi[i][0] > X: 5 if min_and_max[0] > taxi[i][1]: min_and_max[0] = taxi[i][1] 6 if min_and_max[1] < taxi[i][1]: min_and_max[1] = taxi[i][1] 7 8 else: 9 fee = taxi[i][1] + ((X - taxi[i][0]) // taxi[i][2] + 1) * taxi[i][3] 10 if min_and_max[0] > fee: min_and_max[0] = fee 11 if min_and_max[1] < fee: min_and_max[1] = fee 12 13 min_and_max = [str(n) for n in min_and_max] 14 return min_and_max 15 16N, X = [int(n) for n in input().split()] 17taxi = [[ int(n) for n in input().split() ] for _ in range(N)] 18print(' '.join(find_min_and_max(X,taxi)))

#問題がなかった動作チェック
上記の入力例1

入力例2
2 8000
2000 730 280 90
1052 410 237 80

出力例2
2710 2810

入力例3
3 600
600 200 200 400
900 800 400 500
200 200 200 300

出力例3
600 1100

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

1T2R3M4

2021/04/02 15:50

3 900 500 5000 200 400 400 4800 200 400 300 4900 200 400
xJustinx

2021/04/02 16:58

回答ありがとうございます。超初歩的なミスをしていました。長い内容読んで回答していただきありがとうございます。
guest

回答1

0

自己解決

minとmaxの初期値設定ミスをしていました。

投稿2021/04/02 17:02

xJustinx

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問