C-ID
C-IDについて。
座標圧縮の問題と言えるらしい。 ほしい配列はすぐにわかったけど、この方法は慣れないとスラスラ書けないな。
def solve():
N, M = map(int, input().split())
# N分の二次元配列を用意する
piys = [[] for _ in range(N)]
# 各県を添え字として市を格納していく
for i in range(M):
p, y = map(int, input().split())
piys[p-1].append((y, i))
ans = [None]*M
# enumrateで添字付きで県、市の配列を見る
# p = index, iys = 市となる
for p, iys in enumerate(piys):
iys.sort()
# enumrateで添字付きで市の配列を見る
# k = 誕生順, y = 経過時間、i = 元のpiysの順序となる
for k, (y, i) in enumerate(iys):
pref = str(p+1)
born = str(k+1)
# 左を0埋めする
ans[i] = pref.rjust(6, "0")+born.rjust(6, "0")
for i in ans:
print(i)
if __name__ == "__main__":
solve()
rjust
で左埋めした文字列を取得可能。
enumrateはindex付きの配列を取得する。