Naomi's notebook

Naomi's notebook

AtCoder Beginners Selection in Java


この流れだとC#をやるはずなんですが、
金に目が眩んで来たのでClojureをやりたいなあ。
らしいのでJavaをやります。
C#は一時間くらいやって放置していたunityを勉強する予定なのできっとその時にやるでしょう。

Javaの経験としては、 五月祭2019 Live Codegolf Contest day2 の練習で1行くらい書きました。
それだけだけど、特に困ることなくすぐにできてしまいました。やはりHaskellみたいにC++Pythonと違う書き方をしなきゃいけない言語の方が楽しいかな(募集中)


Bash
naomi-notebook.hatenablog.com
JavaScript
naomi-notebook.hatenablog.com
Haskell
naomi-notebook.hatenablog.com

PracticeA Welcome to AtCoder

import java.util.*;
public class Main {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int a=sc.nextInt();int b=sc.nextInt();int c=sc.nextInt();
        String d=sc.next();
        System.out.println((a+b+c)+" "+d);
    }
}

ABC086A Product

import java.util.*;
public class Main {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int a=sc.nextInt();int b=sc.nextInt();
        System.out.println(a*b%2==0?"Even":"Odd");
    }
}

ABC081A Placing Marbles

これで文字をカウントしている記事が出てくるのですが、1が最後にある時WAになってしまいます。

import java.util.*;
public class Main {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        String s=sc.next();
        System.out.println(s.split("1").length-1);
    }
}

String.prototype.split() - JavaScript | MDNによると

separator が文字列の最初または最後、あるいは両方に現れた場合、それぞれ、配列の最初、最後、その両方が空の文字列になります。

らしいのですが、実際には後続の空の文字列は破棄されるようです。
これでAC

import java.util.*;
public class Main {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        String s=sc.next();
        System.out.println((s+"0").split("1").length-1);
    }
}

ABC081B Shift only

import java.util.*;
public class Main {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int N=sc.nextInt();
        int[] A=new int[N];
        for(int i=0;i<N;i++){
            A[i]=sc.nextInt();
        }
        for(int sum=0;;sum++){
            for(int i=0;i<N;i++){
                if(A[i]%2>0){System.out.println(sum);return;}
                A[i]/=2;
            }
        }
    }
}

ABC087B Coins

10^5ループがいけるなんて早いなあ(Bashをやったあとの発言)

import java.util.*;
public class Main {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int A=sc.nextInt();
        int B=sc.nextInt();
        int C=sc.nextInt();
        int X=sc.nextInt();
        int ans=0;
        for(int i=0;i<=A;i++){
            for(int j=0;j<=B;j++){
                for(int k=0;k<=C;k++){
                    if(i*500+j*100+k*50==X)ans++;
                }
            }
        }
        System.out.println(ans);
    }
}

ABC083B Some Sums

import java.util.*;
public class Main {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int N=sc.nextInt();
        int A=sc.nextInt();
        int B=sc.nextInt();
        int ans=0;
        for(int i=1;i<=N;i++){
            int sum=0;int num=i;
            while(num>0){sum+=num%10;num/=10;}
            if(A<=sum&&sum<=B)ans+=i;
        }
        System.out.println(ans);
    }
}

ABC088B Card Game for Two

sortを使うために、sortなどのメゾットが存在するobject型であるInteger(primitive型であるint型のwrapper)を使わなければならない。読み込みについては自動でキャストしてくれるようだ。

import java.util.*;
import java.util.Arrays;
import java.util.Collections;

public class Main {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int N=sc.nextInt();
        Integer[] A=new Integer[N];
        for(int i=0;i<N;i++){
            A[i]=sc.nextInt();
        }
        int ans=0;
        Arrays.sort(A, Collections.reverseOrder());
        for(int i=0;i<N;i++){
            ans+=i%2==0?A[i]:-A[i];
        }
        System.out.println(ans);
    }
}

ABC085B Kagami Mochi

重複を許さないSet,Hash Setに入れて重複を消します。

import java.util.*;

public class Main {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int N=sc.nextInt();
        List<Integer> A = new ArrayList<Integer>();
        for(int i=0;i<N;i++){
            A.add(sc.nextInt());
        }
        Set<Integer> set = new HashSet<Integer>(A);
        System.out.println(set.size());
    }
}

ABC085C Otoshidama

import java.util.*;
public class Main {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int N=sc.nextInt();
        int Y=sc.nextInt();
        int ans=0;
        for(int i=0;i<=N;i++){
            for(int j=0;i+j<=N;j++){
                if(10000*i+5000*j+(N-i-j)*1000==Y){
                    System.out.println(i+" "+j+" "+(N-i-j));
                    return;
                }
            }
        }
        System.out.println("-1 -1 -1");
    }
}

ABC049C 白昼夢 / Daydream

import java.util.*;
public class Main {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        String s=sc.next();
        System.out.println(s.matches("^(erase|eraser|dream|dreamer)+$")?"YES":"NO");
    }
}

ABC086C Traveling

import java.util.*;
public class Main {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        Integer N=sc.nextInt();
        Integer[] t=new Integer[N+1];
        Integer[] x=new Integer[N+1];
        Integer[] y=new Integer[N+1];
        Boolean b=true;
        t[0]=x[0]=y[0]=0;
        for(int i=1;i<=N;i++){
            t[i]=sc.nextInt();
            x[i]=sc.nextInt();
            y[i]=sc.nextInt();
            Integer d=Math.abs(t[i]-t[i-1])-Math.abs(x[i]-x[i-1])-Math.abs(y[i]-y[i-1]);
            if(d<0||d%2>0){
                b=false;
            }
        }
        
        System.out.println(b?"Yes":"No");
    }
}