最大値と最小値
最大値と最小値
nums = [int(input()) for _ in range(3)]
print(max(nums))
print(min(nums))
神経衰弱
神経衰弱
cards = map(int, input().split())
cards_count = [0] * 13
for card in cards:
cards_count[card-1] += 1
if all(cnt % 2 == 0 for cnt in cards_count):
print('Yes')
else:
print('No')
ランクD相当と言いながら、割と難易度高いと思います。😓
じゃんけん (忖度)
じゃんけん (忖度)
y, h = input().split()
hands = {'R': 'S', 'S': 'P', 'P': 'R'}
if int(y) < 10:
print(hands[h])
else:
print(hands[hands[h]])
辞書で作成するジャンケンの手を、
{相手の手: 負けてあげる手}
とすることで、「入力 h → 負けの手を出す」となります。10歳未満の子に対する流れです。
一方、10歳以上に対しては絶対に負けてやらない!ので必ず勝つ手を出しますが、この必ず負けてあげる辞書をそのまま使って実現できます。
相手が 'R' を出したらこちらは 'P' を出して勝ちます。グーの負ける手の負ける手がグーの勝つ手となります。
【相手がグーの時】
{'R': 'S'} → {'S': 'P'} → パーで勝つ
負ける手の負ける手を出して勝つのが、
print(hands[hands[h]])
この部分になります。
【相手がチョキの時】
{'S': 'P'} → {'P': 'R'} → グーで勝つ
【相手がパーの時】
{'P': 'R'} → {'R': 'S'} → チョキで勝つ
そしてパーの負ける手はグーであいこになり、三すくみが一周します。
n→10 進法
n→10 進法
例1
例2
n = int(input())
a = input()
result = 0
for i, b in enumerate(a[::-1]):
result += pow(n, i) * int(b)
print(result)
n = int(input())
a = input()
print(int(a, n))
例2のとおり、int() 関数を使うと簡単に求められます。
int() 関数 (Pythonリファレンス)
10進数は、重み × 各位の数 を全て足すことで求められます。
重み |
---|
2進数
8 | 4 | 2 | 1 |
---|---|---|---|
1 | 0 | 1 | 0 |
8 | 0 | 2 | 0 |
8 + 0 + 2 + 0 = 10
4進数
64 | 16 | 4 | 1 |
---|---|---|---|
1 | 0 | 1 | 0 |
64 | 0 | 4 | 0 |
64 + 0 + 4 + 0 = 68
4進数
64 | 16 | 4 | 1 |
---|---|---|---|
1 | 2 | 3 | 0 |
64 | 32 | 12 | 0 |
64 + 32 + 12 + 0 = 108
10進数
1000 | 100 | 10 | 1 |
---|---|---|---|
1 | 2 | 3 | 4 |
1000 | 200 | 30 | 4 |
1000 + 200 + 30 + 4 = 1234
一桁目から計算していますので、入力値を逆順にしてから計算しています。
お菓子の価格帯
お菓子の価格帯
例1
例2
例3
_ = int(input())
a = list(map(int, input().split()))
q = int(input())
for _ in range(q):
l, r = list(map(int, input().split()))
cnt = 0
for kind in a:
if l <= kind <= r:
cnt += 1
print(cnt)
_ = int(input())
a = list(map(int, input().split()))
q = int(input())
for _ in range(q):
l, r = list(map(int, input().split()))
print(sum(l <= kind <= r for kind in a))
_ = int(input())
a = list(map(int, input().split()))
q = int(input())
lr = [list(map(int, input().split())) for _ in range(q)]
print(*(sum(l <= kind <= r for kind in a) for l, r in lr), sep='\n')
初め、「個数」と言うから買えるだけ買うのかと思いましたが、「お菓子の種類数」という意味で安心しました。😓
与えられたクエリに基づいて線形探索をするだけですが、二重ループを使います。クエリはパイザ君が求める価格帯 l
, r
なので、この中央にお菓子の価格を当てて評価にかけていきます。
この a_i の値はとくに昇順となっているわけではないようです。 break や continue を使って効率を求めようとすると不正解になります。←やった
ぴったり卵を生産 - その 2
ぴったり卵を生産 - その 2
ネコ、ちょっとわからないので勉強してきます。😸