atcoder復習
下記にatcoderで解いたB問題を記載します。
勉強の記録として残します。是非参考にしてください。
解いた問題一覧
1.問題①
B - Rectangle Detection(Difficulty68)
解答
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 Friends(Difficulty139)
解答
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文を抜ける。