0
0

【Python】Atcoder勉強記録⑥

Last updated at Posted at 2023-04-02

Atcoderの勉強した記録を書いていきます。
勉強の参考にしてください。
解いた問題一覧

1.問題①

A - AlternatelyDifficulty14

解答

n = int(input())
s = input()
flg = True
cnt = 0
cnt_1 = 0

for i in s:
    if i == 'M':
        cnt += 1
        cnt_1 = 0
    elif i == 'F':
        cnt = 0
        cnt_1 += 1
    if cnt == 2 or cnt_1 == 2:
        flg = False
        break

if flg:
    print('Yes')
else:
    print('No')

解法

文字の入力をinput()で受け取ります。
for文で文字を確認して文字が同じ場合はcntを1プラスします。
cntが2になった時点でflgをFalseにしてfor文を抜けます。
最後にYesかNoを表示します。

2.問題②

B - ChessboardDifficulty31

解答

s_list = []
cnt = 0
int_list = ['8', '7', '6', '5', '4', '3', '2', '1']
moji_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
ans = ''
flg_moji = ''
for _ in range(8):
    s = input()
    s_list.append(s)

for i in s_list:
    if '*' in i:
        flg_moji = i
        num = int_list[cnt]
    else:
        cnt += 1

s_cnt = flg_moji.find('*')
moji = moji_list[s_cnt]
ans = moji + num
print(ans)

解法

数字のlistと文字のlistを用意します。
数字のlistは降順で用意して文字のリストはaから順番通りに用意します。
まず入力で下記画像のような文字を受け取ります。
image.png
一番下の列がaという風になり上の列に行くにつれてb,cとなっていきます。
そして、列の一番左のマスが1でそこから右に行くに従って1ずつ増えていきます。
今回の画像はa1と表示されるのが正解です。

下記から実際のプログラムの説明をします。

まず、入力を受け取ったらが何行目にあるのかを探します。今回はfor文で探しています。
一個ずつ見ていきif文で
の行があるかを確認してあった場合にその行数を変数に格納します。
行数を格納して*が存在する行も変数に格納します。

次にが存在する文字を見てが何文字目にあるのかのindexを探します。
この際にfindという関数を使用します。

用意した数字のリストと文字のリストにアクセスして値を取り空の変数にセットして表示します。

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