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])