こんにちは。本日も水曜日のAtCoder Daily Trainingに参加しました。EASYです。
今回は解けそうな3問ミスなしでいけました。ひとまず安心。
この間のABCでめちゃめちゃだったので、少しですがchar型や配列を勉強して挑みました。
まだ「これってなんだっけ?」と立ち止まってしまうのですが、少しずつできているようなきがします。
1問目「Exponential or Quadratic」
累乗の計算をするMath.powを知らなくて、大きな値だとパンクしてしまい時間がかかりました。(for文で書いてた)
Math.powを用いて引き算の正負を判定するという形にたどり着いてAC。
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); long n = sc.nextLong(); if (Math.pow(2, n) - n * n > 0){ System.out.print("Yes"); } else { System.out.print("No"); } } }
2問目「Pawn on a Grid」
二重のfor文に辿り着くまでに随分時間がかかってしまいました。
よく考えれば、二次元配列も頭からすっぽ抜けていました・・・。が、なんとかAC
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int h = sc.nextInt(); int w = sc.nextInt(); int result = 0; for (int i = 0; i < h; i++) { String str[] = sc.next().split(""); for (int j = 0; j < w; j++) { if (str[j].equals("#")) { result += 1; } } } System.out.print(result); } }
3問目「LOOKUP」
これは配点的にはおそらくB問題かと思うのですが、前の日にPaizaの問題集で部分一致の問題を解いており、完全にラッキー問題でした。
3分くらいで、これが一番はやく解けました。
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s = sc.next(); String t = sc.next(); int result = s.indexOf(t); if (result != -1) { System.out.print("Yes"); } else { System.out.print("No"); } } }
4問目「TaK Code」
3問いけたので、とりあえず挑戦してみようと思ったのですが、むりでした・・・。
蓋を開けてみると、意外と愚直にやる問題のようです。3問解くのに40分かかってたら無理ですね・・・。
今週はABCに参加できないので、トレーニングだけでも参加できて良かったです。