【AtCoder】ABC391解説(Python)

AtCoder Beginner Contest 391の解説記事です。

目次

ABC391 A – Lucky Direction

問題

問題文の要約は以下の通りです。

問題の要約

8種類の方角(北、東、西、南、北東、北西、南東、南西)のいずれかを表す文字列 \(D\) が与えられる。方角とそれを表す文字列は以下のように対応しているとき、 \(D\) が表す方角の反対の方角を表す文字列を出力せよ。

  • 北:N
  • 東:E
  • 西:W
  • 南:S
  • 北東:NE
  • 北西:NW
  • 南東:SE
  • 南西:SW

解説1

全パターンを場合分けして出力する。

解説

入力を受け取ります。

# 入力
D=input()

全パターンを場合分けして出力します。

# 場合分けして出力する
if D=='N':
    print('S')
elif D=='S':
    print('N')
elif D=='E':
    print('W')
elif D=='W':
    print('E')
elif D=='NE':
    print('SW')
elif D=='NW':
    print('SE')
elif D=='SE':
    print('NW')
elif D=='SW':
    print('NE')

解答

# 入力
D=input()

# 場合分けして出力する
if D=='N':
    print('S')
elif D=='S':
    print('N')
elif D=='E':
    print('W')
elif D=='W':
    print('E')
elif D=='NE':
    print('SW')
elif D=='NW':
    print('SE')
elif D=='SE':
    print('NW')
elif D=='SW':
    print('NE')

解説2

反対の方角を辞書(dict)で定義する

解説

反対の方角を辞書(dict)で定義します。

# 反対の方角の辞書
opposites={
    'N':'S',
    'S':'N',
    'E':'W',
    'W':'E',
    'NE':'SW',
    'NW':'SE',
    'SE':'NW',
    'SW':'NE'
}

入力を受け取り、辞書を用いて反対の方角を出力します。

# 入力
D=input()

# 出力
print(opposites[D])

解答

# 反対の方角の辞書
opposites={
    'N':'S',
    'S':'N',
    'E':'W',
    'W':'E',
    'NE':'SW',
    'NW':'SE',
    'SE':'NW',
    'SW':'NE'
}

# 入力
D=input()

# 出力
print(opposites[D])

解説3

配列(list)で方角を管理する。

解説

入力を受け取ります。

# 入力
D=input()

方角のリストを用意しておき、入力の方角のインデックスを求めます。反対方向は4つ先(または4つ前)なので、インデックスに4を足し、8で割った余りを求めます。

# 方角のリスト
directions=['N','NE','E','SE','S','SW','W','NW']

# 入力の方角
index=directions.index(D)

# 反対方向は4つ先(または4つ前)
print(directions[(index+4)%8])

解答

# 入力
D=input()

# 方角のリスト
directions=['N','NE','E','SE','S','SW','W','NW']

# 入力の方角
index=directions.index(D)

# 反対方向は4つ先(または4つ前)
print(directions[(index+4)%8])
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次