ABC173 復習

A - Payment 少し考える必要があるか・・? 答えは必ず1000より小さい数になり、かつ支払いに使用できるのが1000の倍数円なので、1000の剰余を使用すれば良さそう。 回答は以下。 n = int(input()) if n % 1000 == 0: print(0) else: print(1000 - (n % 1000…

ランレングス圧縮

ランレングス圧縮は、可逆性の圧縮アルゴリズムです。 具体的な圧縮方法は、ある文字が連続して何回出ているか、を記録していく方法です。 例を挙げると、「abbccc」という文字列があった場合、「a1b2c3」というように、文字+連続した回数を繰り返すことで…

ABC172 復習

C問題が解けず・・。 A - Calc こちらは問題文の通りに実装すればよいですね。 a = int(input()) print(a + a ** 2 + a ** 3) B - Minor Change 問題を言い換えると、文字列SとTについて、異なる文字はいくつあるかということですね。 制約上、SとTは同じ長…

ABC171 復習

ABC171の復習です。 結果だけ先に書くと、A、B、Dの3問正解でした。 A - αlphabet A問題はいつも通り、簡単なif文が書ければ解けますね。 また、小文字であるかどうか、はpythonではislowerを使用することで簡単に求めることができます。ほかの言語でもおそ…

pythonでpriority_queue(優先度付きキュー)を使う

pythonでpriority_queueを使います。 pythonではheapqとして実装されていますので、使用する場合はheapqをインポートします。 import heapq さて、heapqを使用するメリットですが、大きく2つ、 最小値をO(logN)で取得する 要素をO(logN)で挿入する がありま…

ABC170 復習

今回もC問題までしか解けませんでした。 いつになったらD問題を安定して解けるようになるのやら・・。 というわけで、復習始めます。 A - Five Variables リスト中に含まれる0のインデックス値を出力する問題です。 出力の際には1_indexにすることに気をつけ…

bit全探索

bit全探索について学びます。 bit全探索とは 探索をbitを用いて行うことです。 あるN個のものから、選択する・しないを0か1で表すことで、全てのパターンを列挙することができます。 例えば、N=4のとき、24=16パターンの列挙に、0000〜1111の2進数を用います…

macでJavaの環境構築

はい。macを購入したので、改めてjavaの開発環境を整えようと思います。 参考にしたのはこちら。 qiita.com はい、この手順通りにやれば、macでjava開発環境が手に入ります。

ABC016 C - 友達の友達

今回はこちら。 atcoder.jp グラフ問題ですね。 個人的にはグラフ問題はだいぶ慣れてきた感があります。 問題概要としては、各頂点について、1つの頂点を経てたどりづける頂点がいくつあるかを求める問題です。 ただし、1つの頂点を経てたどり着ける頂点が自…

ABC169 復習

今回はC問題まで解けました。ただ、WAとTLEを合わせて4回出たのが悔しいです。 D問題については、素因数分解について学ぶことができたのでまぁ良しとしましょう。 A - Multiplication 1 掛け算の問題ですね。 単純に入力値をかけ合わせれば答えとなります。 …

ABC168 復習

D問題まで解けました! 幅優先探索の典型的なパターンだったので、勉強した甲斐がありました。 と、いうわけで復習です。 atcoder.jp A - ∴ (Therefore) ポイントは2つ、 文字列の末尾を取得する 取得した文字列によって挙動を変える(ifが書ける) いつもの…

ABC167 復習

はい、今回もCまで解けました。(Bで2WAが辛い) というわけで復習です。 atcoder.jp A - Registration A問題は、2つの文字列比較をする問題でした。 1つ目の文字列と、2つ目の文字列の末尾を除いた部分が一致しているかを判定します。 pythonだと以下のよう…

ABC166 復習

D問題の壁高すぎますねぇ・・。 (今回のも数学ゲーか?) C問題までは20分ほどで解けたのでよかったのですが。 atcoder.jp A - A?C if-elseが書ければなんとかなります。 与えられた文字列SがABCか、ARCかで出力する文字列を変化させればよいだけです。 if …

三井住友信託銀行プログラミングコンテスト2019 D - Lucky PIN

atcoder.jp 与えられた文字列S(0~9のみ)から、3桁のパスワードをいくつ作れるか?という問題です。 ここで、Sの桁数が最大30000桁になるため、Sの3重ループをしようとするとTLEになってしまいます。 発想を逆転させて、3桁のパスワードを全列挙させて、そ…

ABC165 復習

今回はBまでしか解けませんでした。 atcoder.jp A問題 We Love Golf A~Bのうち、Kで割り切れる数字があればOK、なければNGを出力します。 なので、AからBまでの数値を順にKで割る操作を繰り返せば答えが出せます。 K = int(input()) a, b = map(int, input()…

ABC164 復習

今回もC問題までしか解けませんでした。 というわけで、復習です。 問題は以下。 atcoder.jp A問題 Sheep and Wolves 問題概要は、2つの値を比較した結果を出力すること。 以下、私の回答です。 S, W = map(int, input().split()) if S <= W: print('unsafe'…

ABC163 復習

unratedになってしまったのは残念でしたね。 とはいえ、「解く」ことは大事なので、やってみました。 今回はCまですんなり解けました。 A問題 円周の長さを求める問題でした。 円周の長さを求める公式(直径×π)と、小数の扱いに気を付ければ解けますね。 py…

ABC162 復習

atcoder.jp A問題 文字列に7が含まれているかどうかです。 pythonなら、forとifが書ければ解けますね。 n = input() for i in n: if i == '7': print('Yes') break else: print('No') B問題 かの有名なFizzBuzzですね。問題では数値の和を出力するように少し…

ABC161 復習

atcoder.jp A問題 変数のスワップができれば解けますね。 こういう時、Pythonは便利ですよね。 x, y, z = map(int, input().split()) x, y = y, x x, z = z, x print(str(x) + ' ' + str(y) + ' ' + str(z)) B問題 問題文にあるものをそのまま記載すればいい…

ABC160 復習

A問題 文字列操作の初歩的な部分について問うてる問題ですね。 N文字目へのアクセスを知っていれば何とかなります。 #3文字目と4文字目の比較 s[2] == s[3] B問題 四則演算をプログラムできれば解けます。 ans = 0 ans += (x // 500) * 1000 ans += (x % 500…

Pythonで競技プログラミング

qiita.com 私はpythonを使用してAtcoderに参加しているので、上の記事を参考にしつつ、pythonを使用して学んでいきます。 abs 絶対値を求める関数。abs(n)とすると実行できます。 abs(-100) #100 abs(20) # 20 absは、直線グラフ上などでの差を求める場合な…

ABC159 復習

復習です。 A問題 ハマりました。 2つ選んで偶数になるのは、偶数・偶数か、奇数・奇数の組み合わせしかないので、N、Mそれぞれについて組み合わせを調べればヨシ。 pythonでは、itertoolsを使用すると解きやすいです。 import itertools #例えば、10個のも…

LINEの新卒採用試験やってみようかな

Twitterで流れてきたので。 問題を見たけど、はっきり言って全然わからん。 問題は大きく3つあるみたい(2020年度以降新卒採用試験でもやってるかは不明) 。 逆ポーランド記法 8クイーン問題 単純換字暗号 逆ポーランド記法は基本情報処理試験(?)で見た…

DFS(深さ優先探索)

DFSについて学びました。 参考にしたのはこの記事です。 基本編 以下が、DFSを実現する基本的なソースコードです。 #頂点数 #競プロでは入力を受け付けるが、ここでは気にしない v = 5 #グラフは2次元配列であらわす(無向グラフ) graph = [[] for i in ran…

AtCoderに向けて勉強することのメモ

いろいろ勉強したいことがあるので、勉強する予定のものを記載。 随時更新していく所存。 累積和 しゃくとり法 DFS(深さ優先探索) BFS(幅優先探索) union find DP(動的計画法)

WorksheetクラスのPrintOutメソッドが失敗しました。(実行時エラー'1004')

VBA

全シートを印刷するマクロを実行したところ、以下のようなエラーが出てしまったのでメモ。 シートが非表示になっている場合にSheets(index).PrintOutを実行すると上記のエラーになってしまいます。 この場合、シートをいったん再表示にすることでエラーを回…

ES6 分割代入

分割代入について説明します。 私の理解では、オブジェクトや配列などの複数の値(変数)を、別の変数へ代入しやすくするものです。 以下に例を挙げます。 オブジェクトのプロパティに対する分割代入 let person = { name: 'たろう', age: 20, hobby: '将棋'…

ES6 デフォルト引数

デフォルト引数は、関数の引数に値を渡さない場合に使用する値をあらかじめ決められる機能(シンタックスシュガー)です。 以下のように使用します。 //引数を指定しない場合に、引数のデフォルトとして「こんにちは!」を指定する。 function hello(message…

アロー関数

ES6から、アロー関数が導入されました。 特別な機能を持つというよりは、メソッドを書きやすくするいわゆるシンタックスシュガーにあたるものです。 これは説明よりも実際に見たほうが早いと思いますので、以下に例を示します。 //ES5までの書き方 const add…

constとlet

変数宣言におけるconstとlet ES6から、変数宣言に使える予約語に、constとletが増えました。 これまではvarを使用して変数宣言をしていましたが、これからはvarを使うことはありません。 必ず、constまたはletを使うようにしましょう。 constとletの違い con…