体験を伝える―『ガジェット通信』の考え方

面白いものを探しにいこう 本物を体験し体感しよう 会いたい人に会いに行こう 見たことのないものを見に行こう そしてそれをやわらかくみんなに伝えよう [→ガジェ通についてもっと詳しく] [→ガジェット通信フロアについて]

【息抜き】右位置揃え【言語不問】解答と解説

【息抜き】右位置揃え【言語不問】

本問題は、表題のテーマで、簡単なプログラムを書くものです。

それでは以下、問題とその解答を見ていきましょう。

問題

改行区切りの文字列の各行は、半角数字のみの整数(最大桁数32)になっています。

この各行の先頭に任意の数の半角のアンダーバー(_)を挿入して、右揃えになるように加工して下さい。

ただし、最も桁数が多い数値の先頭には、半角のアンダーバーを挿入しないものとします。

(参考:各プログラミング言語の標準入出力サンプル

// 入力例
1
23
45678
9
10

// 出力例
____1
___23
45678
____9
___10

答え

この問題は、以下の手順で処理を行なう必要があります。
各行の文字列長を調べて、最大の文字列長を得る。
各行の文字列が、最大の文字列長より短ければ、足りない文字数分の「_」を、文字列の先頭に追加する。

初めに全ての行の文字列長を調べなければ、最大の文字列長は分かりません。そのため、2回各行に対して処理を行なう必要があります。

そのことが分かれば、この問題は解けます。

以下、問題の入力と出力です。
入力1

5
2898963826126
154864622363291
990
993493502515
504212492
82
2509
40267696559119224
897868
5
591429093809
76308641170293
52194957565089
1282578703150921
2138540
3
1338
7659217700078821
340897154
出力1

________________5
____2898963826126
__154864622363291
______________990
_____993493502515
________504212492
_______________82
_____________2509
40267696559119224
___________897868
________________5
_____591429093809
___76308641170293
___52194957565089
_1282578703150921
__________2138540
________________3
_____________1338
_7659217700078821
________340897154

入力2

521898963826126465486
62236
99125901793493
72515820421249213231509650
576
45591192245697868081
11429093809326308641
702933621949
556508
7928257870
6509
661
385400133338
765921
200078821834089715
94202
6764379845237
280
156635300422216336599901547
4842797431816499945
4969802944031
271618344612618575
37360720238454995418
67266379862787591692774209419
70302474175796335780
54552174240979
775449554229427174569825
21947926479568
768574124
1
2183697783
4328996433757138182307562
5
1
631847386010159739891862966091
8814420
532
36934750353556885273534
634817275290
60406260346957162
491996220
817811229436
582590545531760933816247776
20044742756029358691221967471
9113
889
53230359693502005
419635322607434488479126902
4274861941
2856022780533172
385358085649400669051225
539544487201230816549782461
32
402
2
3906737141201844426027565861
9639732028906
8655193436820792
71447516492
5600229403981
33530732514809331792262637
1866
33
61093512624292721922049706
679199579907213191058927899
1807835851270878440
9426526272038872255
9208287208920338692540820
1768719454810475223637733
227664834317304
6838649548720643409732
58568705036868884
474411155
4158898624698684897478526
527399715793250695782771117434
85732723377989787350709601874
502457363305414268050
20880577471226056320374629
7215450940712610834682
620624681505
6445236261
7100090823167
394585322872064903249031
64
360949676
904115125
4209575458
126953748219672
682426941410067
2123117562471
30843265331
68342735066468123975852
274782168930646834672
788251915390600452871120
9345
10
870707756232260356
206610547961905442160970
22081
45725102725801904169481356887
出力2

1 2 3次のページ
CodeIQ MAGAZINEの記事一覧をみる
  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。