diff --git a/rooki/B117.java b/rooki/B117.java new file mode 100644 index 0000000000000000000000000000000000000000..c25bf76d86c82b561cfcc77b398594329b6b81dd --- /dev/null +++ b/rooki/B117.java @@ -0,0 +1,83 @@ +import java.util.Scanner; + +/** + * 教習車が何周するかカウント. + * + * @author rooki + * @version 1.0 + */ +public class B117 { + + /** + * mainメソッド. + * + * @param args 使用しない + */ + public static void main(final String[] args) { + final Scanner sc = new Scanner(System.in); + + // 車の並び方の情報を保存 + final CarInfo carOrder = new CarInfo(sc); + + final int roundCount = roundCalculation(carOrder); + + outputResult(roundCount); + + sc.close(); + } + + /** + * 車が何周しなければならないか計算する. + * + * @param carOrder 車の並び方の情報が保存されている + * @return 何周したのかを返す + */ + public static int roundCalculation(CarInfo carOrder) { + int roundCount = 0; + int carNumber = 1; + + while (true) { + // 出口に近い車から順に該当する車番かどうかチェック + for (int nearToExit = 0; nearToExit < carOrder.carCount; nearToExit++) { + // 該当の車番があれば次の車番へ移る + if (carOrder.rowOfCar[nearToExit] == carNumber) { + carNumber += 1; + } + } + // 車番が車の台数を超えたらループから抜ける + if (carNumber > carOrder.carCount) { + break; + } else { + roundCount += 1; + } + } + return (roundCount); + } + + /** + * 何周したのかを出力する. + * + * @param roundCount 何周したのか保存されている + */ + public static void outputResult(final int roundCount) { + System.out.println(roundCount); + } + + /** + * 車の情報を持つクラス. + * + */ + static class CarInfo { + private int carCount; + private int[] rowOfCar; + + public CarInfo(final Scanner sc) { + this.carCount = sc.nextInt(); + this.rowOfCar = new int[carCount]; + + for (int i = 0; i < carCount; i++) { + rowOfCar[i] = sc.nextInt(); + } + } + } +}