カメヲラボ

主にプログラミングとお勉強全般について書いてます

CodeIQ過去問集30:几帳MEN

本稿はCodeIQで2014年12月1日~12月29日に出題された コード銀行:几帳MEN という問題を再編集したものです。 ※出題時と記述が一部異なる場合がありますがご了承ください。

几帳MEN

3人の几帳面な男たちがいました。
ジェシー「みかんをたくさん頂いたんだ。みんなで分けようYO!」
ダニエル「イイネ!…ええと、みかんは全部で30個あるみたいだから、ひとり10個ずつならきちんと分けられるNE!」
ジョゼフ「それだけじゃダメだYO!みかんは一つひとつ大きさが違うんだから、その辺も考えてきっちり分けNIGHT!」

【問題】

30個のみかんがあります。3人で10個ずつ分けようと思いますが、不公平にならないよう、みかんの重さの合計が均一になるように分けてください。たとえば、次のような重さのみかん6個

101g
103g
110g
105g
114g
112g

を、3人で2つずつ分ける場合、重さの合計が等しくなるように分けると

(101g, 114g)
(103g, 112g)
(105g, 110g)

のように、合計が215グラムになるように分けることができます。

みかんの重さのデータを標準入力から読み込み、それを重さの合計・個数ともに3等分するプログラムを書いてください。

【入力】

入力はテキストファイルで用意されています。これを標準入力から読み込んでください。 入力ファイルの1行目には、みかんの個数Nが与えられます。 2行目以降のN行分が、みかんの重さ(正の整数)です。

【出力】

標準出力に、3等分したみかんのグループを出力してください。 1行につき1グループ、計3行を出力します。それ以外は出力しないでください。 分け方が複数ある場合、その中の1種類だけを出力してください。

【入出力例】

入力例1

6
101
103
110
105
114
112

出力例1

(101, 114)
(103, 112)
(105, 110)

入力例2

9
86
106
85
128
95
96
91
102
108

出力例2

(85, 86, 128)
(91, 102, 106)
(95, 96, 108)

【解答方法】

kicho_men.zipをダウンロードし、展開してください。中には以下のファイルが含まれています。

  • sample1.in.txt: 入力例1です
  • sample1.out.txt: 出力例1(入力例1の解答例)です
  • sample2.in.txt: 入力例2です
  • sample2.out.txt: 出力例2(入力例2の解答例)です
  • testdata.in.txt: これを入力として、正しい実行結果が得られるプログラムを書いてください。

(解答・解説は後日)