AtCoder初心者振り返りメモ ABC327

# ABC327の回
https://atcoder.jp/contests/abc327

ABC完。
これまでの最高パフォーマンスでした。
# A-問題
https://atcoder.jp/contests/abc327/tasks/abc327_a

**問題文**
英小文字からなる長さ N の文字列 S が与えられます。
S の中で a と b が隣接する箇所があれば Yes を、なければ No を出力してください。(a と b の順序は問いません。)

**ポイント**
ab の並びとba の並びの両方を判定するロジックが必要でした

````Python:A.py
N = int(input())
S = str(input())

for i in range(N-1):
    # 並びが ab の場合
    if S[i] == 'a' and S[i+1] == 'b':
        print("Yes")
        exit()
    # 並びが ba の場合
    elif S[i] == 'b' and S[i+1] == 'a':
        print("Yes")
        exit()

print("No")
````
````Python:A2.py
#【別解】文字列Sの中に "ab" "ba" が存在するかのシンプルな書き方
N = int(input())
S = str(input())

if "ab" in S:
    print("Yes")
    exit()  
if "ba" in S:
    print("Yes")
    exit()  
    
print("No")
````
# B-問題
https://atcoder.jp/contests/abc327/tasks/abc327_b

**問題文**
整数 B が与えられます。
AのA乗 = B であるような正の整数 A が存在するならばその値を、存在しないならば -1 を出力してください。

**ポイント**
乗数なので計算結果が大きくなるので、Bをオーバーする値は探索対象から除外する。

````Python:B.py
B = int(input())

ans = 0
i = 1
# while文で、Bの値をオーバするまでpow関数で計算した
while ans <= B:
    ans = pow(i,i)
    if ans == B:
        print(i)
        exit()
    else:
        i += 1

print(-1)
````
# C-問題
https://atcoder.jp/contests/abc327/tasks/abc327_c

**問題文**
![327C.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547298/68b66a24-758a-d12e-9569-90026b243604.png)
**ポイント**
set の要素数で、条件の範囲を1から9まで埋めているかを判定
3 x 3 の範囲の判定では、時間をかければより賢いコードがかけるかもしれないが、時間内の回答を優先して力技で記述しました。

````Python:C.py
<入力例>
1 2 3 4 5 6 7 8 9
4 5 6 7 8 9 1 2 3
7 8 9 1 2 3 4 5 6
2 3 4 5 6 7 8 9 1
5 6 7 8 9 1 2 3 4
8 9 1 2 3 4 5 6 7
3 4 5 6 7 8 9 1 2
6 7 8 9 1 2 3 4 5
9 1 2 3 4 5 6 7 8

A = [input().split() for i in range(9)]  

# 横一列を1から9まで埋めているかを判定
for i in range(9):
    ST = set()
    for j in range(9):
        ST.add(A[i][j])
    if len(ST) != 9:
        print("No")
        exit()

# 縦一列を1から9まで埋めているかを判定
for i in range(9):
    ST = set()
    for j in range(9):
        ST.add(A[j][i])
    if len(ST) != 9:
        print("No")
        exit()

# 3 x 3 の範囲指定は、ベタ書きしてクリアした。
ST = set()
for i in range(0,3):
    for j in range(0,3):
        ST.add(A[i][j])
if len(ST) != 9:
    print("No")
    exit()

ST = set()
for i in range(0,3):
    for j in range(3,6):
        ST.add(A[i][j])
if len(ST) != 9:
    print("No")
    exit()

ST = set()
for i in range(0,3):
    for j in range(6,9):
        ST.add(A[i][j])
if len(ST) != 9:
    print("No")
    exit()

ST = set()
for i in range(3,6):
    for j in range(0,3):
        ST.add(A[i][j])
if len(ST) != 9:
    print("No")
    exit()

ST = set()
for i in range(3,6):
    for j in range(3,6):
        ST.add(A[i][j])
if len(ST) != 9:
    print("No")
    exit()

ST = set()
for i in range(3,6):
    for j in range(6,9):
        ST.add(A[i][j])
if len(ST) != 9:
    print("No")
    exit()

ST = set()
for i in range(6,9):
    for j in range(0,3):
        ST.add(A[i][j])
if len(ST) != 9:
    print("No")
    exit()

ST = set()
for i in range(6,9):
    for j in range(3,6):
        ST.add(A[i][j])
if len(ST) != 9:
    print("No")
    exit()

ST = set()
for i in range(6,9):
    for j in range(6,9):
        ST.add(A[i][j])
if len(ST) != 9:
    print("No")
    exit()

print("Yes")
````

参考リンク
https://qiita.com/T_death/items/c415728b309173c2521f