LoginSignup
0
0

More than 1 year has passed since last update.

なんちゃって解説 第2回 - ABC252 A~B問題(Cは後日)

Last updated at Posted at 2022-05-26

はじめに

こんにちは、ひろとです。なんちゃって解説シリーズ第2回でございます。前回の記事はこちらから。注意点なども第1回の記事にありますのでまだ読んでない方はぜひお読み下さい。また、今回のC問題が時間内に解けていないので後日追加します。ただ数学のテストとかがあるのですこーし遅れるかもです。来週の週末目標でやります。

ABC252

今回のAB問題は解きやすい問題でした。A問題は連想配列を使うか言語に用意されている関数を使うことになると思います。B問題はsetを使うか普通に値を比較していけば解くことができました。

A問題 - ASCII Code

問題リンク: A - ASCII Code

制約

  • $ N $は90以上122以下の整数

入力

$ N $

出力

答えを出力

考察

Pythonの場合はchr()でASCIIコードと文字列を変換できるので、そのまま実装します。これを使いたくない場合は連想配列を使うと解くことができます。
ちなみに「ASCII」は「アスキー」と発音します。

回答コード

クリックして展開
chr()を使う場合
n = int(input())
print(chr(n))
連想配列を使う場合
n = int(input())
chr = {
    97: 'a',
    98: 'b',
    99: 'c',
    ...
    120: 'X',
    121: 'Y',
    122: 'Z',
}
print(chr[n])

B問題 - Takahashi's Failure

問題リンク: B - Takahashi's Failure

制約

  • $ 1 \leq N \leq N \leq 100 $
  • $ 1 \leq A_i \leq 100 $
  • $ 1 \leq B_i \leq N $

入力

$ N \quad K $
$ A_1 \quad A_2 \quad \cdots \quad A_N $
$ B_1 \quad B_2 \quad \cdots \quad B_K $

出力

高橋君が嫌いな食品を食べる可能性があるならばYesを、無いならばNoを出力せよ。

考察

max()で求めた$ A $の中の最大値を$ M $とした時、$ A $に$ M $と同じ値が複数個含まれている可能性があります。そのため、index()を使って$ A $内での$ M $のインデックスを取得する方法は取れません。実はindex()だと一番最初に出てくる要素のインデックスしか取得することができないため、内包表記でインデックス+1の値を取得し配列$ l $に代入しています。enumerate()を使うとインデックス(n)と値(v)を取得できるので結構便利です。あとは事前にsetにしておいた$ B $を使って存在確認を行えばOKです。
ここで、インデックスの値の扱い方に関して注意が必要です。問題で与えられる数は「◯番目」で一番最初の要素は1番目、配列の一番最初の要素のインデックスは0から始まります。そのため、$ l $に代入する時点で+1してあげると後の実装がすこーーーーーしだけ綺麗になります。
またこの解法で解く場合は$ B $をset()し忘れたら確実にTLEで詰みます。おそらくこの解き方は少数派だと思われるので公式の解説へのリンクを以下に貼っておきます。

B - Takahashi's Failure 解説 by mechanicalpenciI

回答コード

クリックして展開
n, k = map(int, input().split())
a = list(map(int, input().split()))
b = set(map(int, input().split()))

m = max(a)

l = [n + 1 for n, v in enumerate(a) if v == m]

for i in l:
    if i in b:
        print('Yes')
        exit()

print('No')

C問題 - Slot Strategy

解き直し終わったら書きます🙏

0
0
0

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