【AtCoder】ABCで初めてC問題が解けました。【ABC114】

2018-12-03
%E7%AB%B6%E6%8A%80%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0
    

目次

はじめに AtCoderについて

http://osrehun.hatenadiary.jp/entry/2015/12/13/000716

AtCoder Beginner Contest、 通称ABCはAtCoderのコンテストの1つで初級〜中級者を対象としており、A、B、C、Dの4つの問題で構成されています。

ABCDの問題を難易度順に並べると、

A < B <<< 壁 <<< C <= D 

といった難易度じゃないかと思います。

AB問題に関しては、基本的なプログラミングの文法を試されていますが、 C以降の問題は、数学的な考え方が要求されプログラムの文法だけでは戦えなくなるためAtCoder初心者の壁に成ると思います。

はじめてC問題が解けました

https://beta.atcoder.jp/users/yoshiki1123

AtCoder Beginner Contest 114 (ABC114)で初めてC問題が解けました。 毎回C問題がギリギリのところで解けず、モヤモヤしていたのでとても嬉しいです。

ただ、いつものC問題よりも若干簡単なのかなとも思いました。

C問題を解いた時のパフォーマンス

今回のレーティングのグラフです。 コンテスト内の順位は656位。 出したパフォーマンスは1021。 レーティングは468→554(+86)となりました。

C問題を解いたユーザの中では遅い方でしたが、パフォーマンスは1000を超えました。 安定的にパフォーマンス1000を超えるのであればC問題を解くのは必須と言えそうです。

緑までの道のりはまだ長そうです。以上。

おまけ:解いた問題 C - 755

ちなみに今回提出してACとなった回答を紹介しておこうと思います。

問題

https://beta.atcoder.jp/contests/abc114/tasks/abc114_c

整数 Nが与えられます。 1以上N以下の整数のうち、七五三数 は何個あるでしょうか?

ここで、七五三数とは以下の条件を満たす正の整数です。 十進法で表記したとき、数字 7, 5, 3 がそれぞれ 1回以上現れ、これら以外の数字は現れない。

AtCoder ABC C - 755

という問題。

計算例

入力例

575

出力例

4

575以下の七五三数は、357,375,537,573の4個。

回答ソース JavaScript

function main(arg) {
    arg = Number(arg.split("\n")[0])

    var master = [0, 3, 5, 7]
    var counter = 0;

    for (var i = 0; ; i++) {
        var tmp = String(i.toString(4))
        var _tmp = "";

        if (tmp.length < 3) {
            continue;
        }

        if (tmp.indexOf('0') !== -1) {
            continue;
        }

        var b = tmp.split("").filter(function (x, i, self) {
            return self.indexOf(x) === i;
        });

        if (b.length < 3) {
            continue;
        }

        for (var j = 0; j < tmp.length; j++) {
            _tmp += master[tmp[j]]
        }

        if (_tmp > arg) {
            break;
        }
        counter++
    }
    console.log(counter)
}
main(require('fs').readFileSync('/dev/stdin', 'utf8'));

考え方的には、3,5,7から成り立つ3進数に変換して総当たりで解くという方法を考えました。 無事、ACとなりました。

おまけ2

    
s-yoshiki
s-yoshiki
githubtwitterqiita
Web作ってますが、インタラクティブなプログラミングも好きです。
JavaScript / Vue / node.js / PHP / AWS / OpenCV

関連記事

10進数から2進数 2進数から10進数への変換 JavaScript
10進数から2進数 2進数から10進数 テスト 10進数から2進数、2進数から10進数への変換を行うJavaScriptのコードの紹介。 JSの場合、10進数から2進数への変換はメソッド。2進数から1…

JavaScriptの配列ショートハンド (AtCoder用)

JavaScriptでワーシャルフロイド法を実装
AtCoder ABC012 D問題 D - バスと避けられない運命 解説 実装 AtCoder ABC012 の D問題でワーシャルフロイド法が利用できる問題が出てきたので、 JavaScriptで実装しました。 AtCoder ABC012 D問題 D…

JavaScriptによる2分探索(バイナリサーチ) のサンプルコード
2分探索について ソース 参考 JavaScriptで2分探索(バイナリサーチ)を実装してみました。…

JavaScriptで幅優先探索 (bfs) を実装する
bfsソースコード 前提 bfs関数 テストコード JavaScriptで幅優先探索 (bfs) を実装し簡単な最短経路の探索問題を解いてみました。 AtCoderの問題を参考にしています bfsソースコード 前提 bfs 関数の定義について 引数 table…

JavaScriptでbig-integerでできること
定数 メソッド abs add, plus and bitLength compare compareTo compareAmb divide, over divmod equals, eq greater, gt greaterOrEquals, geq…

順列・組み合わせ のサンプルコード JS [permutation] [combination]
順列 - permutation サンプルコード Usage 組み合わせ - combination サンプルコード Usage 順列(permutation) と 組み合わせ(combination) のサンプルコードをJavaScript…

bit全探索で動的計画法を実装する JavaScript
サンプル1 サンプル2 参考 AtCoderとかをやっていると、 動的計画法(DP)、部分和といった問題とかに遭遇したりしますが、…

ブラウザで動くAtCoder用のデバッガを作ってみた (JSのみ)
AtCoder-JsDebugger 説明 フレームワーク、ライブラリなど ブラウザで完結するAtCoder用のデバッガを作ってみました。 対応言語は(JS)のみになっています。 というのも、書いたコードをブラウザ上でeval…

深さ優先探索アルゴリズムを実装 部分和問題を解く
深さ優先探索について 部分和問題を解いてみる 問題 サンプルコード デバッグ 例題: AtCoder ABC015 C 解説 ソースコード おまけ : 2進数を利用して 深さ優先探索について 深さ優先探索(depth-first search)は探索手法の一つです。 DFS…

最新の投稿

SQL整形ツールを作成した
特徴 使い方 FW/ライブラリ等 nuxt sql-formatter-plus Monaco Editor おまけ ソース SQL整形ツールを作成しました。 URLはこちらです。 SQL…

ファイルの1行目を表示 Linuxコマンド head
head コマンド例 headコマンドでファイルの 1行目もしくは指定した行数だけ表示する方法。 head 利用できるオプション コマンド例 の 1行目だけを表示 の 5行目までを表示 カレントディレクトリ以下の全てのtxtファイルの1行目を表示

Amazon S3 と ローカルファイルのチェックサムの比較
s3apiでEtagを取得 検証 マルチアップロード時の注意点 Amazon S3 の Etagを使ってファイルの整合性チェックをする。 s3apiでEtagを取得 S3 APIを利用するとEtagを取得します。この値はmd5のハッシュ値になります。 検証 MD…

github.io / gitlab.ioで公開されている質の高い技術ドキュメント
AWSによるクラウド入門 Pythonプログラミング入門 普通の人が資産運用で99点をとる方法とその考え方 2018年の段階で私が知らないこと github.io / gitlab.io で無料で公開されている興味深いドキュメントのmemo AWS…

10進数から2進数 2進数から10進数への変換 JavaScript
10進数から2進数 2進数から10進数 テスト 10進数から2進数、2進数から10進数への変換を行うJavaScriptのコードの紹介。 JSの場合、10進数から2進数への変換はメソッド。2進数から1…

JavaScriptの配列ショートハンド (AtCoder用)

JavaScriptでワーシャルフロイド法を実装
AtCoder ABC012 D問題 D - バスと避けられない運命 解説 実装 AtCoder ABC012 の D問題でワーシャルフロイド法が利用できる問題が出てきたので、 JavaScriptで実装しました。 AtCoder ABC012 D問題 D…

GitHub Actions で Gatsby をビルドし Amazon S3 にデプロイする
GitHub Actions について あらかじめ準備しておくもの AWS IAM ユーザを環境変数にセットする workflowの記述 ビルド バッジを利用する 終わりに 参考にしたところ Gatsbyで作った静的サイトを、GitHub Actions…

cloudinaryによる画像ファイルの管理 はじめてみる
目的 cloudinary について 他のサービスとの比較 料金プラン アカウントの登録 利用してみる ダッシュボード 画像の編集 APIベースでのアクセス 感想 参考 画像の管理や配信、さらには加工といった事ができるsaas型のcloud…

JavaScriptによる2分探索(バイナリサーチ) のサンプルコード
2分探索について ソース 参考 JavaScriptで2分探索(バイナリサーチ)を実装してみました。…

Tags

Dates

© 2020   404 motivation not found