AtCoder229をやった(Java)

AtCoder229をやった。
AとB問題の解答例だけみたけど、やっぱり自分はまだまだだなとしみじみと思う。

##[A](https://atcoder.jp/contests/abc229/tasks/abc229_a)
【#(黒)】と【.(白)】の場合分け問題
"辺"としてみたときに隣り合っていたら、"Yes"を違う場合は"No"を出力する。
全パターン列挙でもよい。
私の場合は、全パターン列挙に近いが、途中で場合分けをした。
例えば、以下のYesの入力例
1)　　2)　　3)　　4)
 ##　　#.　　#.　　##
 ##　　#.　　##　　..
1と2はリスト型のHashSet()を使えば重複削除により、1ラインとして扱うことができます。
その場合は【#】が含まれていれば"Yes"です。

4は、**1と2以外**として扱うため、上下が逆でも"Yes"になります。

最後に3は、**1と2以外**として扱うけど、【#】の個数をカウントして3以上だと"Yes"を出すロジックとなっています。

```
import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        // Your code here!
        Scanner scan = new Scanner(System.in);
        ArrayList<String> list = new ArrayList<String>();
        
        while (scan.hasNextLine()) {
            String str = scan.nextLine();
            list.add(str);
        }
        
        Set<String> set = new HashSet<String>(list);
        int cnt = 0;
        if(set.size() == 1){
            if(list.get(0).split("")[0].equals("#") || list.get(0).split("")[1].equals("#")){
                System.out.println("Yes");
            }else{
                System.out.println("No");
            }
        } else {
            if(list.get(0).split("")[0].equals("#") && list.get(0).split("")[1].equals("#") ||
                list.get(1).split("")[0].equals("#") && list.get(1).split("")[1].equals("#")
            ){
                System.out.println("Yes");
            } else {
                for(int i = 0; i < list.size(); i++){
                    if(list.get(i).split("")[0].equals(".")){
                        cnt++;
                    }
                    if(list.get(i).split("")[1].equals(".")){
                        cnt++;
                    }
                }
                if(cnt >= 2){
                    System.out.println("No");    
                }
            }
        }
    }
}
```

##[B](https://atcoder.jp/contests/abc229/tasks/abc229_b)
数値として考えると大変なので、文字列として考えてあげるのがよさそう。
桁違いの場合、特に**桁多い側**はその分1~9の値でくるので、それは繰り上がりしないし、
事前に排除してループを回してあげればいいような気がします。
※コメントは後で付けました。気にしないでください。

```
import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        // Your code here!
        Scanner scan = new Scanner(System.in);
        ArrayList<String> list = new ArrayList<String>();
        
        String str = scan.nextLine();
        list.add(str);
        
        String[] strIndex = new String[2];
        boolean flg = true;
        for(int i = 0; i < 2; i++){
            strIndex[i] = list.get(0).split(" ")[i];    
        }
        
        /* 桁数が同じの場合 ex) 328 + 620
        * else if 一つ目の桁数が二つ目の桁数より小さい場合 ex) 28 + 620
        * else if 一つ目の桁数が二つ目の桁数より大きい場合 ex) 1328 + 620
        */
        if(strIndex[0].length() == strIndex[1].length()){
            for(int i = 0; i < strIndex[0].length(); i++){
                int cnt = Integer.parseInt(strIndex[0].substring(i, i+1)) + Integer.parseInt(strIndex[1].substring(i, i+1)); 
                if(cnt >= 10){
                    flg = false;
                    break;
                }
            }
        } else if(strIndex[0].length() < strIndex[1].length()) {
            int strLength = strIndex[1].length() - strIndex[0].length();
            strIndex[1] = strIndex[1].substring(strLength, strIndex[1].length());
            for(int i = 0; i < strIndex[0].length(); i++){
                int cnt = Integer.parseInt(strIndex[0].substring(i, i+1)) + Integer.parseInt(strIndex[1].substring(i, i+1)); 
                if(cnt >= 10){
                    flg = false;
                    break;
                }
            }
        } else if(strIndex[0].length() > strIndex[1].length()) {
            int strLength = strIndex[0].length() - strIndex[1].length();
            strIndex[0] = strIndex[0].substring(strLength, strIndex[0].length());
            for(int i = 0; i < strIndex[0].length(); i++){
                int cnt = Integer.parseInt(strIndex[0].substring(i, i+1)) + Integer.parseInt(strIndex[1].substring(i, i+1)); 
                if(cnt >= 10){
                    flg = false;
                    break;
                }
            }
        }
        
        if(flg){
            System.out.println("Easy");
        } else {
            System.out.println("Hard");   
        }
    }
}
```

いつかC問題もJavaで解きたいな(n回目)。