【白俊】109991047-Python 3


10989.数列3
https://www.acmicpc.net/problem/10989
私の答え-成功
from sys import stdin
import collections

N = int(stdin.readline())

nums = collections.defaultdict(int)

for i in range(N):
    n = int(stdin.readline())
    nums[n] += 1

nums = sorted(nums.items())

for k, v in nums:
    for _ in range(v):
        print(k)
numsという名前のディックシーケンスを使用して入力した数値の数を格納
numsのキーでソートし、数量で印刷します.

他人の解答
from sys import stdin

N = int(stdin.readline())

nums = [0]*10001

for i in range(N):
    n = int(stdin.readline())
    nums[n] = nums[n] + 1

for i in range(10001):
    for j in range(nums[i]):
        print(i)
Nの範囲は10000以下の自然数である.
最初からnumsの長さを10001に設定
インデックスを数値で表し、配列の値を数値で表し、入力したすべての数値を数値で表します.
すべての10001個の数字を表示し、数量で印刷します.
ソートなしで使用可能!

コイン枚
https://www.acmicpc.net/problem/11047
私の答え-成功
from sys import stdin

N, K = map(int, stdin.readline().split())
coins = []
ans = 0

for _ in range(N):
    c = int(stdin.readline())
    coins.append(c)

for i in range(N-1, -1, -1):
    if coins[i] <= K:
        ans += K // coins[i]
        K = K % coins[i]

print(ans)
コインはすでに並べられていて、大きな値からKを減算するために、ドアを逆順に回転させます
硬貨[i]がKより小さい瞬間の硬貨[i]をKからできるだけ多くの硬貨を減算する
=> K//coins[i]
(繰り返し文から直接削除するとタイムアウト)