かわらにかわらは割れない

プログラミングとかいろいろ

AtCoder で黄色になりましたか?

この記事は色変アドベントカレンダー 2020 の 18 日目の記事です。
17 日目のももはらさんの「色変(できませんでした)記事 - ももはらの日記」から、19 日目の tomerun さんの「AtCoder(ヒューリスティック)で何らかの色になれませんでした - TopCoderの学習のお時間」という記事へと続いていきます。

この記事は「AtCoder で黄色になりましたか?」という問題の解法について記述します。

・問題概要

AtCoder のアカウント ID が与えられるので、レートの highest が黄色に達している場合は "Yes" を、達していない場合は "No" を出力してください。

・解法

python による解法を紹介します。urllib でページを取得し、lxml でパースしてレートの highest を取得します。この値が 2000 以上の時に "Yes"、そうでない時は "No" を出力すればよいです。

・実装例
# -*- coding: utf-8 -*-

import urllib.request
import lxml.html


def main():
    user_id = input().strip()
    contestant_url = f"https://atcoder.jp/users/{user_id}"
    html = urllib.request.urlopen(contestant_url).read()
    html_tree = lxml.html.fromstring(html)
    highest = html_tree.xpath("//table[@class='dl-table']")[1]
    highest = int(highest[2][1][0].text)
    if highest >= 2000:
        print("Yes")
    else:
        print("No")


if __name__ == "__main__":
    main()

・結果

$ python get_highest.py
kawara_y
Yes

やったぜ。

・黄色になるために

黄色になるまでにやったこと:問題を埋めて色々なアルゴリズムを知る。
以上です。ご参考になれば幸いです。

・後記

xpath で取得した後がかなりダサくないですか? 綺麗な方法を教えてもらえると嬉しいです。