プログラミングコンテスト(Java編)

こんにちは、高橋です。

北出さんの日記でも紹介がありましたが、
私もプログラミングコンテストに参加してきたので
躓いた点についてお伝えできればと思います。

// Java 8
import java.util.ArrayList;
import java.util.Scanner;
public class Main{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
ArrayList list = new ArrayList();
while(sc.hasNextInt()){
list.add(sc.nextInt());
}
Integer[] num = new Integer[list.size()];
num = list.toArray(num);

こちらは「標準入力された複数の数値を利用して~○○○」という問題で、
私が提出したコードの書き出し部分になります。
触ったことのある方が多い言語だと思いますが、
一つ大きな間違いがあることがおわかりでしょうか。 

これが原因となり、テストケースを一つもパスすることなく不正解となりました。
落ち着いて該当行のデバッグをしていれば問題ないものであることが余計に悔しいです。

本コンテストの出題傾向について、ライブラリ等の引き出しの多さを問うものではなく
複雑な条件を満たすまでのフローを短時間で正確にアルゴリズム化できればよいという印象で、
若手社員でも十分上位を狙うことが出来ると思いました。
来年、もっと良い成績が取れるように頑張ります。

———————————–

答え :while文の条件にhasNextInt()を用いている
原因 :入力待機状態が解除されないためにwhileのループから抜け出せない
解決策:入力する値の数(ループで回したい回数)を持つ変数を宣言してfor文とともに使用

高橋 清志郎
高橋 清志郎