LoginSignup
2
2

More than 5 years have passed since last update.

Pythonで競プロに挑む日誌 vol.5 ~リスト操作の基本~

Last updated at Posted at 2018-09-03

台風がやばそう

現在の目標

  • 今年の10月内に茶色を取得する ←イマココ
  • 年内に緑色を取得する
  • APG4b で C++ にも手を出す

今日の問題

ABC088B - Card Game for Two
https://beta.atcoder.jp/contests/abs/tasks/abc088_b

結果

answer1.py
# coding: utf-8
N = int(input())
lis_an = sorted(list(map(int, input().split())), reverse=True)
#lis_an = sorted([int(x) for x in input().split()], reverse=True)

alice = sum(lis_an[i] for i in range(N) if i%2 == 0)
bob = sum(lis_an[i] for i in range(N) if i%2 != 0)

print(alice - bob)

# 実行時間:17 ms
# メモリ :3060 KB
# コード長:227 Byte
# 得点  :200/200

個人的には納得の出来でした. しかしながら, ほかの方の回答でもっとスマートなものがありました. Loi さんという方のコードを参考にした結果が下記です.

another_answer.py
# coding: utf-8
N = int(input())
lis_an = sorted([int(x) for x in input().split()], reverse=True)

print(sum(lis_an[0::2]) - sum(lis_an[1::2]))

# 実行時間:17 ms
# メモリ :2940 KB
# コード長:147 Byte
# 得点  :200/200

うん. ひとつおきにリストの中身を参照するなら, for 文を使う必要はないですね. なんか悔しいです. やはり基礎は大切だな, と思いました.

とはいえ, あとから読み返したら answer1 のほうが思いだし易い気がするんだよなぁ, と負け惜しんでみる.

明日やること

ABC085B - Kagami Mochi を解く.

2
2
0

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