こんばんは。
2021/2/20に、AtCoderのABC-192に参加しました。
レートは以下の通りとなっています。
開始から1時間くらいでC問題を突破しました。
D問題の途中で時間切れとなりました。D問題も内容は理解し、ロジックが良い感じに組み立てられそう・・というところでした。
順位は6236位でした。はあ、先は長いなあ・・。
レートは173→184に更新!数字の伸びが鈍くなってきたぞ。
A問題
今までに集めたコインはX枚。
100の倍数ごとにご褒美がもらえる。あと何枚でご褒美がもらえるか。
下2桁を算出し、100から減算して残りの枚数を求める事に。
でも、そうするとXが1桁の時にエラーになりますね。考慮が抜けて一度エラーになりました。
ソースは汚いですが、3桁以上か否かで分岐しています。
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
強引にこんなロジックにしてしまいました・・・(笑)
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問題は、かみ砕いてここに記載するのも難しいので、ソースだけ載せたいと思います。
問題文の式の通りに処理を積み上げてテストをしながら、何とか形にできました。
こんなプログラムになったっす!!
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を直近の目標にして頑張ります。
これからもコツコツ取り組んで、茶色を目指したいと思います!
同じく灰色レベルで頑張っている方、お互い頑張りましょう!