LoginSignup
0
0

【Python】Atcoder勉強記録④

Last updated at Posted at 2023-03-22

atcoder復習

下記にatcoderで解いたB問題を記載します。
勉強の記録として残します。是非参考にしてください。
解いた問題一覧

1.問題①

B - Rectangle DetectionDifficulty68

解答

s_list = [] # 入力を受け取る
cnt_list = [] # '#'が何行目なのかを取得
cnt_list_1 = [] # '#'が何文字目かを取得
cnt = 1
cnt_1 = 1

s_1 = '' # '#'が付いた文字をセットする変数

for _ in range(10):
    s = input()
    s_list.append(s)

for i in s_list:
    if '#' in i:
        cnt_list.append(cnt)
        s_1 = i
        cnt += 1
    else:
        cnt += 1

if not s_1 == '':
    for j in s_1:
        if j == '#':
            cnt_list_1.append(cnt_1)
            cnt_1 += 1
        else:
            cnt_1 += 1

print(min(cnt_list), max(cnt_list))
print(min(cnt_list_1), max(cnt_list_1))

解法

入力を受け取りlistに格納する。
#が何行目から存在しているのかをfor文で確認して行数をlistに格納する。
#の文字を確認して#が何文字目から始まっているのかを確認してlistに格納する。
二つのlistの値を確認してminとmaxの値を取得して最後に表示する。
min→始まりmax→最後

2.問題②

B - Everyone is FriendsDifficulty139

解答

N, M = map(int,input().split())
person = [set([]) for _ in range(N)]
# print(person) # [set(), set(), set(), set()]
for i in range(M):
    n_list = list(map(int,input().split()))
    for j in n_list[1:]:
        for k in n_list[1:]:
            person[j-1].add(k)
    # print(n_list[1:]) # [1, 2, 4], [2, 3, 4]
# print(person) # [{1, 2, 4}, {1, 2, 3, 4}, {2, 3, 4}, {1, 2, 3, 4}] set型のリスト

ans = "Yes"
for i in range(len(person)): # set型のlistをループする。
    if(len(person[i]) != N): # Nが参加人数とset型の要素数を見て違った場合にNoをセットする。全員参加している場合は一緒になる。
        ans = "No"
        break
print(ans)

解法

setのlistを用意して重複が無いようにする。
person[(set型)]にループでデータをセットしていく。各set()にデータが格納される。
ansの初期値は'Yes'にする。
for文でperson[]の要素数ループする。
person内にあるset()型の要素数と舞踏会に参加している人数が違った場合(少ない場合)はansに'No'をセットしてfor文を抜ける。

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