【Java】AtCoderのABC-192に参加しました。

こんばんは。

2021/2/20に、AtCoderのABC-192に参加しました。
レートは以下の通りとなっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402487/42dbc886-1276-ecd6-b59b-0c0dbd05b3ce.png)


https://atcoder.jp/users/ishikawaryou

開始から1時間くらいでC問題を突破しました。
D問題の途中で時間切れとなりました。D問題も内容は理解し、ロジックが良い感じに組み立てられそう・・というところでした。

順位は6236位でした。はあ、先は長いなあ・・。
レートは173→184に更新！数字の伸びが鈍くなってきたぞ。

###A問題

今までに集めたコインはX枚。
100の倍数ごとにご褒美がもらえる。あと何枚でご褒美がもらえるか。
下2桁を算出し、100から減算して残りの枚数を求める事に。
でも、そうするとXが1桁の時にエラーになりますね。考慮が抜けて一度エラーになりました。
ソースは汚いですが、3桁以上か否かで分岐しています。

```java
import java.util.Scanner;
 
public class Main{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
  String x = sc.next();
  int len = x.length();
  if(len>=3){
  String ju = String.valueOf(x.charAt(len-2));
  String ichi = String.valueOf(x.charAt(len-1));
  //System.out.println(" ju " + ju);
  //System.out.println(" ichi " + ichi);
  String s2 = ju + ichi; 
  int s2i = Integer.parseInt(s2);
  System.out.println(100-s2i);
  }else{
  int s2i2 = Integer.parseInt(x);  
  System.out.println(100-s2i2);
  }
}
}
```


###B問題
先頭から奇数番目の文字が全て英小文字であり、かつ、先頭から偶数番目の文字が全て英大文字であるような文字列を 読みにくい文字列 と呼ぶ。
入力した文字列は読みにくい文字列かどうか。

大文字・小文字の判別・・これか！！
http://www.kenmiya.info/?p=115

強引にこんなロジックにしてしまいました・・・（笑）

```java
import java.util.Scanner;

public class Main{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
  String s = sc.next();
  int len = s.length();
  char flg = '0';
  for(int i=0;i<len;i++){
      if(i%2!=0){
      if((s.charAt(i)=='A')||
         (s.charAt(i)=='B')||
         (s.charAt(i)=='C')||
         (s.charAt(i)=='D')||
         (s.charAt(i)=='E')||
         (s.charAt(i)=='F')||
         (s.charAt(i)=='G')||
         (s.charAt(i)=='H')||
         (s.charAt(i)=='I')||
         (s.charAt(i)=='J')||
         (s.charAt(i)=='K')||
         (s.charAt(i)=='L')||
         (s.charAt(i)=='M')||
         (s.charAt(i)=='N')||
         (s.charAt(i)=='O')||
         (s.charAt(i)=='P')||
         (s.charAt(i)=='Q')||
         (s.charAt(i)=='R')||
         (s.charAt(i)=='S')||
         (s.charAt(i)=='T')||
         (s.charAt(i)=='U')||
         (s.charAt(i)=='V')||
         (s.charAt(i)=='W')||
         (s.charAt(i)=='X')||
         (s.charAt(i)=='Y')||
         (s.charAt(i)=='Z')){
         }else{
          flg = '1';
         }
      }else{
      if((s.charAt(i)=='a')||
         (s.charAt(i)=='b')||
         (s.charAt(i)=='c')||
         (s.charAt(i)=='d')||
         (s.charAt(i)=='e')||
         (s.charAt(i)=='f')||
         (s.charAt(i)=='g')||
         (s.charAt(i)=='h')||
         (s.charAt(i)=='i')||
         (s.charAt(i)=='j')||
         (s.charAt(i)=='k')||
         (s.charAt(i)=='l')||
         (s.charAt(i)=='m')||
         (s.charAt(i)=='n')||
         (s.charAt(i)=='o')||
         (s.charAt(i)=='p')||
         (s.charAt(i)=='q')||
         (s.charAt(i)=='r')||
         (s.charAt(i)=='s')||
         (s.charAt(i)=='t')||
         (s.charAt(i)=='u')||
         (s.charAt(i)=='v')||
         (s.charAt(i)=='w')||
         (s.charAt(i)=='x')||
         (s.charAt(i)=='y')||
         (s.charAt(i)=='z')){
         }else{
          flg = '1';
         }
      }        
          
  }
  
  if(flg=='1'){
  System.out.println("No");
  }else{
  System.out.println("Yes");
  }
  
  //System.out.println(100-s2i);
  //System.out.println(100-s2i2);
}
}
```

###C問題
C問題は、かみ砕いてここに記載するのも難しいので、ソースだけ載せたいと思います。
問題文の式の通りに処理を積み上げてテストをしながら、何とか形にできました。

こんなプログラムになったっす！！

```java
import java.util.Scanner;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Set;

public class Main{
public static void main(String args[]){
  Scanner sc = new Scanner(System.in);
  int n = sc.nextInt();
  String ns = String.valueOf(n);
  int k = sc.nextInt();
  int fwk = n;
  int g1 = 0;
  int g2 = 0;
  char gwk[] = new char[ns.length()]; 
  String gstwk = "";
  int gstwk1 = 0;
  int gstwk2 = 0;
  for(int i=0;i<ns.length();i++){
    gwk[i] = '-';
  }
  String fwk2 = String.valueOf(fwk);
  for(int a=1;a<=k;a++){
      fwk2 = String.valueOf(fwk);
      for(int i=0;i<fwk2.length();i++){
         gwk[i]=fwk2.charAt(i);
      }
      Arrays.sort(gwk);
      gstwk1=0;
      gstwk2=0;
      //g1//
      gstwk = "";
      //for(int i=fwk2.length()-1;i>=0;i--){
      for(int i=ns.length()-1;i>=0;i--){
        if(gwk[i]!='-'){
        gstwk = gstwk + String.valueOf(gwk[i]);
        }
      }
      gstwk1 = Integer.parseInt(gstwk);
      //g1//
      //g2//
      gstwk = "";
      //System.out.println(" gstwk1 " + gstwk1);
      //for(int i=0;i<fwk2.length();i++){
      for(int i=0;i<ns.length();i++){
        if(gwk[i]!='-'){
        gstwk = gstwk + String.valueOf(gwk[i]);
        }
      }
      gstwk2 = Integer.parseInt(gstwk);
      //System.out.println(" gstwk2 " + gstwk2);
      //g1//
    
      fwk = gstwk1 - gstwk2;
      //System.out.println(" fwk " + fwk);
    
      //clear
      for(int i=0;i<ns.length();i++){
      gwk[i] = '-';
      }
      //clear
  }
  //test
  //for(int i=0;i<3;i++){
  //System.out.println(gwk[i]);
  //}
  //test

  System.out.println(fwk);
  
}
}
```

###感想
今回は、自分に深く関わりのある企業が主催のコンテストでした。
それだけにC問題までは絶対に解きたかったので、最低ラインはクリアできました。
D問題、もうちょっと早くできるといいな~。

レート200を直近の目標にして頑張ります。

これからもコツコツ取り組んで、茶色を目指したいと思います！
同じく灰色レベルで頑張っている方、お互い頑張りましょう！