AtCoder Beginner Contest 277を振り返る。
実力
Rate:437(茶色)
https://atcoder.jp/users/osirukosan今回の目標
ABCの3完!Dは着手できたらOK!言語
Java
※C++への移行は間に合わず、今回もJavaとなりました。
結果
2完。
C問題、解き方はわかるのに、実装できない。。Rate変動
437 →
A問題 3分52秒でAC
指定された数値が出てきた場所を出力する問題。
特に手が止まることもなく、一瞬でAC。
import java.util.*;
public class Main {
public static void main(String[] args) {
// 入力読み込み
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int k = sc.nextInt();
for (int i = 0; i < n; i++) {
int a = sc.nextInt();
if(a == k){
System.out.println(i+1);
return;
}
}
sc.close();
}
}
// Set<Long> list = new HashSet<>();
B問題 14分40秒でAC
指定された条件を満たしているかをチェックする問題
nが52と少ないので愚直に実施してOK。
特に問題なくAC。
import java.util.*;
public class Main {
public static void main(String[] args) {
// 入力読み込み
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String[] s = new String[n];
char[] c1 = {'H', 'D', 'C', 'S'};
char[] c2 = {'A', '2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K'};
for (int i = 0; i < n; i++) {
s[i] = sc.next();
}
boolean f = false;
for (int i = 0; i < n; i++) {
for (int j = 0; j < 4; j++) {
if(s[i].charAt(0) == c1[j]){
f = true;
}
}
if (f == false){
System.out.println("No");
return;
}else{
f = false;
}
for (int j = 0; j < 13; j++) {
if(s[i].charAt(1) == c2[j]){
f = true;
}
}
if (f == false){
System.out.println("No");
return;
}else{
f = false;
}
}
for (int i = 0; i < n; i++) {
for (int j = i+1; j < n; j++) {
if(s[i].equals(s[j])){
System.out.println("No");
return;
}
}
}
System.out.println("Yes");
sc.close();
}
}
// Set<Long> list = new HashSet<>();
C問題 ACできず。。
1を始点として、与えられた数字のペア同士を繋げていき、一番大きな数字を答える問題。
愚直に行うと計算量がO(N^2)となるためNG。
ABC276のB問題に似ている。前回は数値が10^5だったので、数字のペアに対して10^6を掛けて足して連結してソートした。今回は、10^9で連携するとLong型の最大値を超えるため使えなかった。(文字列にして一手間掛ければいけたかも、、ただ、想定解とは違う。)
D問題 以下、着手できず
E問題
F問題
G問題
EX問題
MapやListの使い方の理解が足りないために解答できない。実装できないためにもどかしい思いをするのは辛い。
この記事が気に入ったらサポートをしてみませんか?