Subscribed unsubscribe Subscribe Subscribe

yukicoder No.104 国道

Problem

No.104 国道 - yukicoder

Solution

現在n号線にいるとする。左に進むときには次は2n号線にいる。右に進むときは2n+1号線にいる。与えられた分岐の方向に合わせて何号線にいるのかを更新していけばいい。

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 route = 1;
        for (int i = 0; i < S.length(); i++) {
            if (S.charAt(i) == 'L') {
                route = route * 2;
            } else {
                route = route * 2 +1;
            }
        }
        System.out.println(route);
    }
}
Remove all ads

yukicoder No.99 ジャンピング駒

Problem

No.99 ジャンピング駒 - yukicoder

Solution

偶数と奇数の組み合わせができればその駒たちは消えるので、組み合わせを作った後の残りが答え。

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));
        int N = Integer.parseInt(reader.readLine());
        String[] inputs = reader.readLine().split(" ");
        int evenCounter = 0;
        int oddCounter = 0;
        for (int i = 0; i < N; i++) {
            if (Integer.parseInt(inputs[i]) % 2 == 0) {
                evenCounter += 1;
            } else {
                oddCounter += 1;
            }
        }
        System.out.println(Math.abs(evenCounter-oddCounter));
    }
}
Remove all ads

yukicoder No.98 円を描こう

Problem

No.98 円を描こう - yukicoder

Solution

与えらた点から原点への距離はsqrt(xx + yy)となり、直径はその2倍になる。 直径の少数を切り捨てて+1すれば答え。

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[] inputs = reader.readLine().split(" ");
        int x = Integer.parseInt(inputs[0]);
        int y = Integer.parseInt(inputs[1]);
        double distance = Math.sqrt(x * x + y * y);
        System.out.println((int) (distance * 2) + 1);
    }
}
Remove all ads

yukicoder No.89 どんどんドーナツどーんといこう!

Problem

No.89 どんどんドーナツどーんといこう! - 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));
        int C = Integer.parseInt(reader.readLine());
        String[] inputs = reader.readLine().split(" ");
        int Rin = Integer.parseInt(inputs[0]);
        int Rout = Integer.parseInt(inputs[1]);
        double r = (Rout - Rin )/2.0;
        double V = ((Rin +Rout) / 2.0) * 2 * Math.PI *  (r * r * Math.PI) * C;
        System.out.println(V);

    }
}

yukicoder No.88 次はどっちだ

Problem

No.88 次はどっちだ - yukicoder

Solution

これまで置いた石の数を調べる。その数が偶数なら先手、奇数なら後手。

Code

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String S = reader.readLine();
        int turn = 0;
        for (int i = 0; i < 8; i++) {
            char[] row = reader.readLine().toCharArray();
            for (int j = 0; j < 8; j++) {
                if (row[j] != '.') {
                    turn += 1;
                }
            }
        }
        if (turn % 2 == 0) {
            System.out.println(S);
        } else {
            System.out.println(anotherPlayer(S));
        }
    }

    private static String anotherPlayer(String player) {
        if (player.equals("oda")) {
            return "yukiko";
        } else {
            return "oda";
        }
    }

}
Remove all ads

yukicoder No.83 最大マッチング

Problem

No.83 最大マッチング - yukicoder

Solution

パターンを見つける。 | マッチの数 | 最大の数 | |————-|———-| | 2 | 1 | | 3 | 7 | | 4 | 11 | | 5 | 71 | | 6 | 111 | | 7 | 711 | | 8 | 1111 |

上からわかるように偶数の時は1の連続、奇数の時は最初に7がきてあとは1の連続がくることがわかる。

Code

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Main {


    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(reader.readLine());
        if (N % 2 == 0) {
            System.out.println(createSequenceOfOne(N));
        } else {
            System.out.println("7"+createSequenceOfOne(N-3));
        }
    }

    public static String createSequenceOfOne(int n) {
        int i = 0;
        String acc = "";
        while (i < n) {
            acc = acc + "1";
            i += 2;
        }
        return acc;
    }

}
Remove all ads

yukicoder No.82 市松模様

Problem

No.82 市松模様 - yukicoder

Solution

Code

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String[] inputs = reader.readLine().split(" ");
        int W = Integer.parseInt(inputs[0]);
        int H = Integer.parseInt(inputs[1]);
        String C = inputs[2];


        for (int i = 0; i < H; i++) {
            String leftMostPattern;
            if (i % 2 == 0) {
                leftMostPattern = C;
            } else {
                leftMostPattern = nextPattern(C);
            }
            StringBuilder builder = new StringBuilder(leftMostPattern);
            for (int j = 1; j < W; j++) {
                leftMostPattern = nextPattern(leftMostPattern);
                builder.append(leftMostPattern);
            }
            System.out.println(builder.toString());
        }
    }

    private static String nextPattern(String currentPattern) {
        if (currentPattern.equals("B")) {
            return "W";
        } else {
            return "B";
        }
    }


}
Remove all ads