AtCoder で黄色になりましたか?
色変記事AdventCalendarを作成しました。
— dokin (@ayoiyouyoeyo) 2020年11月4日
みなさまの勇気ある宣言をお待ちしております!https://t.co/1NqMxq7Wu3
この記事は色変アドベントカレンダー 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 で取得した後がかなりダサくないですか? 綺麗な方法を教えてもらえると嬉しいです。