1
1

More than 3 years have passed since last update.

Pythonで問題解いてみた Vol.1

Posted at

はじめに

今回からAtCoderににある問題を解いて、定期的にその問題の内容や
解説を投稿していこうと思います:relaxed:

何回続くかも分からないし需要があるかも分からないですが、誰かが
問題に詰まった時にお役に立てたら幸いです:kissing_smiling_eyes:

では、今回からゆるーく続けていきたいと思うのでよろしくお願いします:grin:

早速いきます!

今回は3問解いてみました!
それでは早速問題の説明・解説していきます:stuck_out_tongue_winking_eye:

「9x9」

問題文

高橋君は九九を覚えたので、1以上9以下の2つの整数の積を計算することが
できます。それ以外の計算はできません。2 つの整数A,Bが与えられます。
高橋君がA×Bを計算できるならその結果を、できないなら代わりに-1を
出力してください。

制約

1 ≤ A ≤ 20
1 ≤ B ≤ 20
入力中のすべての値は整数である。

入力

入力は以下の形式で標準入力から与えられる。
A,B

出力

高橋君が A × Bを計算できるならその結果を、できないなら-1を出力せよ。

という問題でした。私の答えは ↓ の通りです。

9x9.py
A , B = map(int, input().split())

if 1 <= A and A <= 9 and 1 <= B and B <= 9:
  print(A * B)
else:
  print(-1)

カンタンに説明しますね:wink:

まずは"変数 , 変数 = map(型,input().split())"の形で二つの変数に
標準入力から入力させます。".split()"を使うと、スペースで区切って
入力された文字列を分割して入力できます。ちなみに".sprit("と")"
という風に入力すると"と"という文字で区切ってくれます:grin:

次に"if"と"and"を使って複数の条件を作り、それに当てはまった場合に
"print"でAとBの掛け算の結果を出力させます。
条件に合わなかった場合は"-1"を出力します。

以上です!簡単ですね:stuck_out_tongue_winking_eye:
次行きましょう:laughing:

「Curtain」

問題文

高橋君の家の窓の横方向の長さは A であり、横方向の長さが B の
カーテンが 2 枚取り付けられています。(カーテンは縦方向には
窓を覆うのに十分な長さがあります。)

窓のうちカーテンで隠されていない部分の横方向の長さが最小に
なるようにカーテンを閉めます。 このとき、窓のカーテンで隠されて
いない部分の合計の横方向の長さを求めてください。

制約

1 ≤ A ≤ 100
1 ≤ B ≤ 100
A , B は整数である。

入力

入力は以下の形式で標準入力から与えられる。
A , B

出力

窓のうちカーテンで隠されていない部分の合計の横方向の長さを出力せよ。
窓がカーテンで完全に隠される場合は 0 と出力してください。
各カーテンが窓の横幅より長い場合があります。

という問題でした。私の答えは ↓ です。

Curtain.py
A , B = map( int, input().split())

if(A - (B * 2) <= 0):
  print(0)
else:
  print(A - (B * 2))

これはまず、"変数 , 変数 = map(型,input().split())"の形で二つの変数に
標準入力から入力させます。"split()"なので空白区切り文字として入力です:point_up:
次に"if(条件)"の文でカーテンで窓が隠れるか隠れないかの判断をし、
隠れた場合は"0"、隠れなかった場合は隠れていない横の長さ"A - (B * 2)"
を"print()"文で表示します。

以上です。これまた簡単ですね:grin:
次で今回のラストです!

「Tenki」

問題文

ある 3 日間の天気予報が、長さ 3 の文字列 S として与えられます。

S の i(1 ≤ i ≤ 3) 文字目が S のとき、i 日目の天気予報が晴れだったことを、
C のときは曇りだったことを、R のときは雨だったことを意味します。
また 3 日間の実際の天気が、長さ 3 の文字列 T として与えられます。
T の i(1 ≤ i ≤ 3) 文字目が S のとき、i 日目の実際の天気が晴れだったことを、
C のときは曇りだったことを、R のときは雨だったことを意味します。
3 日間で天気予報が的中した日が何日あるかを出力してください。

制約

S および T は長さ 3 の文字列である。
S および T は S, C, R のみからなる。

入力

入力は以下の形式で標準入力から与えられる。
S , T

出力

3 日間で天気予報が的中した日が何日あるかを出力せよ。

という問題でした。私の答えは ↓ です。

Tenki.py
S = list(input())
T = list(input())

i = 0
x = 0

while(i < 3):
    if(S[i] == T[i]):
        x = x + 1
    i = i + 1

print(x)

この問題では、まずは"list(input())"で S と T に文字列をリストへ標準入力から入力
させました。
次に文字を3回比較するために変数"i"を、比較して一致した数を数えるための変数"x"を
用意しました。
あとは"while(条件)"の文で条件を"i < 1"にして処理が終わるたびに"i = i + 1"を
することで処理を3回繰り返させ、 S[] と T[] の配列の中身を順に比較して一致した場合
"x = x + 1"の処理をします。
whileから抜けたら x を"print()"で表示させることで一致した回数を表示させることが
できました:relaxed:

終わり

今回は3つの簡単な問題を解いてみました。
正直ちょっとプログラミングが分かる人なら簡単すぎる問題だったと思います:joy:
こんな感じでゆるーく書いていこうと思うので分かりにくいところや無駄な書き方が
あったらコメントで教えていただけると私の勉強にもなってうれしいです:blush:
今回はここまで!:blush::joy::kissing:

1
1
2

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
1
1