LoginSignup
0
0

More than 1 year has passed since last update.

ABC212 B問題ふりかえり~AtCoder Beginner Contest 参戦録 #5

Last updated at Posted at 2021-08-14

はじめに

ある有名Web系会社のエンジニア採用担当者の方が競技プログラミングに挑戦し、採用候補のエンジニアはもちろん、社内のエンジニアとのコミュニケーションに活用している事例を読み、刺激を受けて始めた競技プログラミング。

採用の仕事から離れたものの今もIT企業に勤務しており、プログラミングの重要性は今後一層増すだろう、ということで参加を継続している(使用言語はPython)。ぶっつけで参加して終わりになっていて積み重ねがない状態だったため実力向上をねらい復習。

ABC212 復習

問題

自分の誤答

# -*- coding: utf-8 -*-
X = list(input())
s = 0

for i in range(4):
    X[i] = int(X[i])

if X[0]==X[1] & X[1]==X[2] & X[2]==X[3]:
    print("Weak")
    exit()

for i in range(2):
    if s == 0:
        if X[i]==9:
            if X[i+1]==0:
                s = 0
            else:
                s = 1
                break
        elif X[i+1] == X[i]+1:
            s = 0
        else:
            s = 1
            break

if s==0:
    print("Weak")
else:
    print("Strong")

学び・気づき

敗因

  • 問題文を最初の3桁が連続していることを指すと誤解した(正しくは4桁が連続していることを指す)。
    • 9015Strongと判定すべきところを、Weakと判定

1≤i≤3 をみたす任意の整数 iについて、 X_i+1 が、X_i の次の数字である。

模範解答からの学び

  • 変数宣言のときにカンマで並べて複数の変数に対して複数の値を代入できる1
  • X_i+1 が、X_i の次の数字である。 ただし、0≤j≤8 について j の次の数字は j+19の次の数字は0」は以下のように表現できる
(int(X[i])+1)%10 = int(X[i+1])

まとめ

ABC212の復習を実施。クリアできなかった原因は問題文の誤解とわかった。悲しい:cry:

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