AtCoder Beginner Contest 277を振り返る。

  •  実力
    Rate:437(茶色)
    https://atcoder.jp/users/osirukosan

  • 今回の目標
    ABCの3完!Dは着手できたらOK!

  • 言語
    Java
    ※C++への移行は間に合わず、今回もJavaとなりました。

  • 結果
    2完。
    C問題、解き方はわかるのに、実装できない。。

  • Rate変動
    437 → 


  • A問題 3分52秒でAC

指定された数値が出てきた場所を出力する問題。

特に手が止まることもなく、一瞬でAC。

import java.util.*;

public class Main {
    public static void main(String[] args) {
        // 入力読み込み
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int k = sc.nextInt();

        for (int i = 0; i < n; i++) {
            int a = sc.nextInt();
            if(a == k){
                System.out.println(i+1);
                return;
            }
        }



        sc.close();
    }
}

//    Set<Long> list = new HashSet<>();
  • B問題 14分40秒でAC

指定された条件を満たしているかをチェックする問題
nが52と少ないので愚直に実施してOK。
特に問題なくAC。

import java.util.*;

public class Main {
    public static void main(String[] args) {
        // 入力読み込み
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        String[] s = new String[n];
        char[] c1 = {'H', 'D', 'C', 'S'};
        char[] c2 = {'A', '2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K'};

        for (int i = 0; i < n; i++) {
            s[i] = sc.next();
        }

        boolean f = false;

        for (int i = 0; i < n; i++) {
            for (int j = 0; j < 4; j++) {
                if(s[i].charAt(0) == c1[j]){
                    f = true;
                }
            }
            if (f == false){
                System.out.println("No");
                return;
            }else{
                f = false;
            }
            for (int j = 0; j < 13; j++) {
                if(s[i].charAt(1) == c2[j]){
                    f = true;
                }
            }
            if (f == false){
                System.out.println("No");
                return;
            }else{
                f = false;
            }
        }

        for (int i = 0; i < n; i++) {
            for (int j = i+1; j < n; j++) {
                if(s[i].equals(s[j])){
                    System.out.println("No");
                    return;
                }
            }
        }
        System.out.println("Yes");
        sc.close();
    }
}

//    Set<Long> list = new HashSet<>();
  • C問題 ACできず。。

1を始点として、与えられた数字のペア同士を繋げていき、一番大きな数字を答える問題。
愚直に行うと計算量がO(N^2)となるためNG。
ABC276のB問題に似ている。前回は数値が10^5だったので、数字のペアに対して10^6を掛けて足して連結してソートした。今回は、10^9で連携するとLong型の最大値を超えるため使えなかった。(文字列にして一手間掛ければいけたかも、、ただ、想定解とは違う。)

  • D問題 以下、着手できず

  • E問題

  • F問題

  • G問題

  • EX問題


MapやListの使い方の理解が足りないために解答できない。実装できないためにもどかしい思いをするのは辛い。

この記事が気に入ったらサポートをしてみませんか?