LoginSignup
0
0

More than 1 year has passed since last update.

【Java】AtCoderのABC-203,204,205に参加しました(レート:277→242→237→223。205の解答のみ振り返り)。

Last updated at Posted at 2021-06-13

こんばんは。

しまった!結構サボってしまっていた・・。
題記の通り、ABCに毎週参加していましたが、202以降更新していませんでした。
参加者のレベルが上がっている(のかな?)&自分がB問題までしか解けない等の状況でマイナスが続いて凹んでいました。
6/13は、ABC-205に参加しましたので、振り返りをします。
レートは以下の通りとなっています。

image.png

レートは14下がり223に。順位は7021/8743でした。C問題まで解けた割に低かったです。ただ、最後落ち着いてC問題に対処できたので、自分としてはまあまあ合格ラインと考えています。
ただ、今のままだと、年内の茶色目標が厳しくなってきたかも。

A問題

100ml中、Aキロカロリーが含まれる飲み物がある。Bmlある場合、どれだけのカロリーがあるか?


import java.util.Scanner;

public class Main{
 public static void main(String args[]){
  Scanner sc = new Scanner(System.in);
   double a = sc.nextDouble();
   double b = sc.nextDouble();
   System.out.println(a*b/100); 
 }

}  


B問題

N個の要素を持つ数列(A1..An)がある。
並べ替えたうえで数列=(1,2,3...N)になるか?

まず、入力した数列を昇順にソートして、あらかじめ用意した(1,2,3...N)の数列と1要素ずつ比較。
数列の中に値の重複があるケースも想定されるので、1個ずつ比較するのが吉と考えました。

import java.util.Scanner;
import java.util.Arrays;

public class Main{
 public static void main(String args[]){
  Scanner sc = new Scanner(System.in);
   int n = sc.nextInt();
   int a[] = new int[n];
   int b[] = new int[n];
   for(int i=0;i<n;i++){
     a[i] = sc.nextInt();   
     b[i] = i+1;
   }
   char flg = '0';
   Arrays.sort(a);

   for(int i=0;i<n;i++)   {
     if(a[i]==b[i]){
     }else{
       flg = '1';
     }
   }

   if(flg=='1'){
   System.out.println("No"); 
   }else{
   System.out.println("Yes"); 
   } 
 }

}  


C問題

A,B,Cの3つの数列を用意。

AのC乗、BのC乗を比較して、不等号を出力。
C乗を全部やる訳にはいかない。でもあれ?C乗なのは変わらないのだから、AとBだけを比較すれば良いじゃないの。これサービス問題?と錯覚した自分がいました。
油断してスタートして、あんなケースこんなケース、コードはぐちゃぐちゃになっています・・。

(混乱した例)
Aがマイナスだった以下のようなケースの場合
A:-3、B:2
Cが偶数の場合は、単純にどちらが大きいか比べる。Cが基数の場合は、どんな時もBが大きくなる。

こういう考慮を重ねると、ぐちゃぐちゃになりますね。


import java.util.Scanner;
import java.util.Arrays;

public class Main{
 public static void main(String args[]){
  Scanner sc = new Scanner(System.in);
   long a = sc.nextLong();
   long b = sc.nextLong();
   long c = sc.nextLong();

   if((a>=0&&b>=0)){
   //----------
   //System.out.println("a"); 
      if(a>b){
        System.out.println(">"); 
      }else{
   //System.out.println("2"); 
           if(a==b){
           System.out.println("="); 
           }else{
           System.out.println("<"); 
           }
      } 
   //----------
   }else{
       //-dottimo mainasu---------
       if(a<0&&b<0){
   //System.out.println("3"); 
          if(c%2==0){   
          //----------
          if(a>b){
            System.out.println("<"); 
          }else{
               if(a==b){
               System.out.println("="); 
               }else{
               System.out.println(">"); 
               }
          } 
          //----------
          }else{
          //----------
          if(a>b){
            System.out.println(">"); 
          }else{
               if(a==b){
               System.out.println("="); 
               }else{
               System.out.println("<"); 
               }
          } 
          //----------
          }         
       //-dottimo mainasu---janai------
       }else{
          //----------
          if(a<0){
   //System.out.println("4"); 
          //---a<0
            if(c%2==0){
             // gusu tujo
             if(a*(-1)==b){
             System.out.println("="); 
             }else{
               //syusei from
               if((a*(-1))<(b)){  
               System.out.println("<"); 
               }else{
               System.out.println(">"); 
               }
               //syusei to
             //System.out.println("<"); 
             }
             // gusu tujo
            }else{
             // kisu
             System.out.println("<"); 
             // kisu
            }
          //---a<0
          }else{
   //System.out.println("5"); 
            //---b<0
            if(c%2==0){
             // gusu tujo
             if((a)==(b*-(1))){
             System.out.println("="); 
             }else{
               //syusei from
               if((a)<(b*-(1))){  
               System.out.println("<"); 
               }else{
               System.out.println(">"); 
               }
               //syusei to
             }
             // gusu tujo
            }else{
             // kisu
             System.out.println(">"); 
             // kisu
            }
            //---b<0
          }
       }
       //-dottimo mainasu---------
   //----------
   }

}
}  


感想

もちろん茶色は目指すのですが、あまりレートにこだわり過ぎるのも良くないと思いました。レートだけしか見えなくなってしまい、レート上がればOK、みたいになって振り返るをおろそかにしてしまいます。短絡的な性格ですね。
振り返りつつ、練習を重ねていきます。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0