yukicoder No.138 化石のバージョン

Problem

No.138 化石のバージョン - yukicoder

Code

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.stream.Stream;

import static java.lang.System.in;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(in));
        String[] S = reader.readLine().split("\\.");
        String[] M = reader.readLine().split("\\.");

        int[] possibleOldVersion = Stream.of(S).mapToInt(Integer::parseInt).toArray();
        int[] targetVersion = Stream.of(M).mapToInt(Integer::parseInt).toArray();

        for (int i = 0; i < 3; i++) {

            if (possibleOldVersion[i] < targetVersion[i]) {
                System.out.println("NO");
                break;
            } else if (possibleOldVersion[i] == targetVersion[i]) {
                if (i==2) {
                    System.out.println("YES");
                }
            } else {

                System.out.println("YES");
                break;
            }
        }
    }
}

yukicoder No.135 とりあえず1次元の問題

Problem

No.135 とりあえず1次元の問題 - yukicoder

Code

    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(in));
        int N = Integer.parseInt(reader.readLine());
        String[] inputs = reader.readLine().split(" ");
        long[] points = new long[N];
        for (int i = 0; i < N; i++) {
            points[i] = Long.parseLong(inputs[i]);
        }
        Arrays.sort(points);
        long minDistance = Long.MAX_VALUE;
        boolean found = false;
        for (int i = 1; i < N; i++) {
            if(points[i]  != points[i-1] ) {
                found = true;
                minDistance = Math.min(minDistance, Math.abs(points[i] - points[i-1]));
            }
        }

        if (found) {
            System.out.println(minDistance);
        } else {
            System.out.println(0);
        }

    }

yukicoder No.128 お年玉(1)

Problem

No.128 お年玉(1) - yukicoder

Code

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import static java.lang.System.in;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(in));
        long N = Long.parseLong(reader.readLine());
        long M = Long.parseLong(reader.readLine());
        findMaximunOtosidama(N, M);
    }

    private static void findMaximunOtosidama(long N, long M) {
        long lo = 1;
        long hi = (Long.MAX_VALUE-1)/M;
        while (lo < hi) {
            long mid = lo + (hi - lo + 1) / 2;
            if (isFeasible(N, M, mid)) {
                lo = mid;
            } else {
                hi = mid - 1;
            }
        }
        System.out.println((lo/1000)*1000);
    }

    private static boolean isFeasible(long N, long M, long money) {
        return money * M <= N;
    }

}
Remove all ads

yukicoder No.123 カードシャッフル

Problem

No.123 カードシャッフル - yukicoder

Solution

1回シャッフルされる前(T1)と後(T2)を考える。カードの位置をc=1..Nとし、抜き出されて一番上に積まれるカードの位置をaとする。 T2の時c=1のカードはT1の時c=aにある。T1の時a<cの位置にあるカードはT2の時もcの位置にある。T1の時a>=cの位置にあるカードはT2の時c+1の位置にある。

#

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

import static java.lang.System.in;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(in));
        String[] inputs = reader.readLine().split(" ");
        int N = Integer.parseInt(inputs[0]);
        int M = Integer.parseInt(inputs[1]);
        inputs = reader.readLine().split(" ");
        int top = 1;
        for (int i = M - 1; i > -1; i--) {
            int a = Integer.parseInt(inputs[i]);
            if (top == 1) {
                top = a;
            } else if (top <= a) {
                top -= 1;
            }
        }
        System.out.println(top);
    }
}

yukicoder No.116 門松列(1)

Problem

No.116 門松列(1) - yukicoder

Code

    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(in));
        int kadomatu = 0;
        int N = Integer.parseInt(reader.readLine());
        String[] inputs = reader.readLine().split(" ");
        for (int i = 0; i < N - 2; i++) {
            int a = Integer.parseInt(inputs[i]);
            int b = Integer.parseInt(inputs[i + 1]);
            int c = Integer.parseInt(inputs[i + 2]);
            if (isKadomatu(a, b, c)) {
                kadomatu += 1;
            }
        }
        System.out.println(kadomatu);
    }

    private static boolean isKadomatu(int a, int b, int c) {

        if (a != b && a != c && b != c) {
            int[] sequence = new int[]{a,b,c};
            Arrays.sort(sequence);
            if (b != sequence[1] ) {
                return true;
            } else {
                return false;
            }

        } else {
            return false;
        }
    }
Remove all ads

yukicoder No.113 宝探し

Problem

No.113 宝探し - yukicoder

Code

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String S = reader.readLine();
        int x = 0;
        int y = 0;
        for (int i = 0; i < S.length(); i++) {
            switch (S.charAt(i)) {
                case 'N':
                    y += 1;
                    break;
                case 'E':
                    x += 1;
                    break;
                case 'W':
                    x -= 1;
                    break;
                case 'S':
                    y -= 1;
                    break;

            }
        }

        System.out.println(Math.sqrt(x*x + y*y));
    }
}
Remove all ads

yukicoder No.111 あばばばば

Problem

No.111 あばばばば - yukicoder

Solution

パターンを見つける。文字列の長さLとすると。回文の数はそれぞれ、L=3の時1,L=5の時4,L=7の時9,L=9の時16のようになる。ここから回文の数(k)は(L-1)/2の二乗になる。 例えばL=3の時(3-1)/2の二乗で1,L=9の時(9-1)/2の二乗で16

Code

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader =new BufferedReader(new InputStreamReader(System.in));
        long L = Long.parseLong(reader.readLine());
        long n = (L-1)/2;
        System.out.println(n*n);
    }
}
Remove all ads