' P '

whatever I will forget

python

グラフ系の問題: ABC166 C - Peaks / ABC068 C - Cat Snuke and a Voyage

問題1 atcoder.jp 問題タイプ グラフ グラフの問題に慣れるのに良い問題. それぞれの展望台と繋がっている道のグラフを作って、それらを比較する. 気を付けるところ 展望台Nから展望台N'を比較する際に、道がある全ての展望台より自展望台が高い場合のみ、co…

Python 入力桁が変化する場合の値の取得

* 演算子 (iterable unpacking operator)を使う 例 1 2 2 1 20 1 1 みたいな入力で、3回ループさせたいのがわかっている場合 for i in range(q): t, x, *y = map(int, input().split()) # 3個目の入力がある場合のみ、*yに値がセットされる qiita.com

区間分割・連長圧縮系: ABC143 C - Slimes

概要 左から文字列を1つずつ確認して、次の文字と同じか、同じではないかを確認する問題. 最終的にはユニークなCharを連結して出力する. 10 aabbbbaaca 答え abaca atcoder.jp 問題タイプ 区間分割・連長圧縮と呼ばれるアルゴリズム. ランレングス圧縮、RLE…

ABC137 C - Green Bin

概要 atcoder.jp 問題形式 連想配列 解法の中での重要な要素 Pythonでは、通常のdictとdefaultdictが存在する. 簡単に違いをまとめると: dict keyが存在しない場合、エラーになってしまう. 例えば、dict[key] += 1をした際に、keyがない場合はエラーになるの…

ABC157 C - Guess The Number

概要 atcoder.jp 問題タイプ 全探索. 1 <= N <= 3なので、最大3桁の999までの数字のどれかが答えになる(答えがある場合). 解法 1-3桁の999までの数字で与えられた桁数の数字とマッチする一番小さい数字を求める問題. 1桁目が7、3桁目が2である最低の数字は…

Python Sort

lambdaでのSortをとりあえず覚えておく 下記を覚えておけば問題ない. arrayやdictのkey/value、どれを基準にsortするかを x:の後のx[0]で指定する. arr = [[3,2],[1,3],[2,4]] arr.sort(key=lambda x:x[0]) print(arr) # [[1, 3], [2, 4], [3, 2]] arr.sort(…

アルゴリズム: Merge Sort & Quick Sort

Merge Sort 概要 arrayを二分していって値の比較をしていくSortアルゴリズム 計算量は O(N log(N)). 詳細 www.youtube.com サンプル問題 Kth Largest Element in an Array - LeetCode サンプルコード class Solution: def findKthLargest(self, nums: List[i…

ABC177 B - Substring

問題 atcoder.jp わからん ぱっと解説コードを見たときにイマイチわからない. 図解してもわかりにくい.... やっていること 解説動画のコードのほうが直感的にわかりやすい(これ大事). Sの現在のindex + Tのlength > Sのlengthの場合、探索を行う必要はない…

ABC221 B - Typo: String内のCharの交換

問題 atcoder.jp 要は隣り合わせのCharを交換しろってこと これ情けないですがわかりませんでした..... たとえば、隣り合わせの2文字をSliceして、交換して、残った文字をくっつける回答を考えてたのですが、前につけるのか後ろにつけるのかの判定がややこし…

Python コーディングテストなどで必要な出力の仕方まとめ

改行せずにprintする 普通にprintを二行書いた場合、改行されてしまう: print("First test string.") print("Second test string.") # First test string. # Second test string. 解決法 print("First test string.", end='') print("Second test string.") …

Atcoder 典型90問 076 Cake Cut

問題 atcoder.jp 公式解説を見ても右側の例が何を言ってるのか理解できない... 解き方 まずは、問題が円形の要素であること。 これは単純に要素を*2するだけなのでわかる。 次に隣り合う要素の和が全体和の÷10と一致するか?というところ。 累積和 累積和が…

ABC113 C - ID

問題 atcoder.jp パッと見たとき例題が全く意味がわかりませんでした。 昇順で出力せよとなっているけど、どういうこと??? 解説 要は同じ県が登場した場合はその出場回数を計算・取得する必要がある。 それを求めるために一度sortを行い、同じ県で登場年…

Python 二次元配列

二次元配列とか多次元配列って名称を忘れていた... まあそれは置いておいて... 背景1: 入力の方が数値と文字列のMix 入力値が [str, int] で複数渡されるような場合にどうしたらいいんだっけ?となったのでメモ やりかた 普通にまずはstrで受け取る それぞれ…

n進数から10進数への変換

問題1 atcoder.jp 数学の解き方 数値の1桁目 * n進数^数値の桁数-1 + 数値の2桁目 * n進数^数値の桁数-2 + ... + 数値のx桁目 * n進数0 juken-mikata.net mankozooyork.hatenablog.com 問題2 atcoder.jp 8進数から9進数に変更する問題 解き方としては8進数 →…

Python 文字列の反転

問題 atcoder.jp 無理矢理やるなら たぶんぎりぎりACの処理速度() Number % 10してstr化して、int化して比較 楽な方法 pythonでは、strにしてからnum[::-1]としたら反転が可能 なので上記やって比較するだけ indexを指定した反転も可能 s[:1] # prefix s[1…

小数点の誤差を避けるには

問題 atcoder.jp A * 0.08とB * 0.1をする 普通にやると WAになる int()を使う場合 今回は小数点以下を切り捨てでよいので実はint()変換するだけでよい pythonのint()変換は整数値のみを返す codechacha.com 王道 小数点を掛け算すると誤差が怖い場合は A * …

ABC 093 B - Small and Large Integers

問題 与えられた数値の幅から、与えられた幅の小さい値、大きい値を昇順で出力せよ、という問題 3~8の数値幅で、2と与えられたら、3,4,7,8と出力する atcoder.jp TLE まずは最初、重複を省いたlistを作って、それぞれ小さい側の幅、大きい側の幅でLoopさせて…

最小金種の支払いアルゴリズム

背景 お釣りができないように払うという問題の場合 atcoder.jp 考え方 支払い金額 / 一番大きい金種 = 払った金種の枚数 支払い金額 % 払った金種 = 残りの支払い金額 1-2を繰り返し 払った金種の枚数の合計 = 最小金種支払い 例 2021円を払う. 1. 2021 / 10…

python 10進数の各桁の足し算

atcoder.jp 解法1 よく出現するものであるので関数を作っておく n, a, b = map(int, input().split()) def calc_num_sum(number): sum = 0 while (number > 0): sum += number % 10 number //= 10 return sum ans = 0 for i in range(1, n+1): if a <= calc_…

python 三項演算子

文法 print("Even" if a**b%2==0 else "Odd")

python 入力値のパターン

標準入力 文字列 (例: "abc") a = input() 数値 (例: 123) a = int(input()) 整数と文字列 例: 123 abc num = int(input()) str = input() 複数行の複数数値 例: 3 1 2 3 n = int(input()) a = list(map(int, input().split())) 複数の数値 (例: 10 123) n, …

python 文字列の一部を書き換えたいとき

NG例 str = "foo" # これできない str[1] = 'x' TypeError: 'str' object does not support item assignment 解決策 となってしまうため、文字列を一旦listにする。 str = "foo" str = list(str) str[1] = 'X' print(str) #[f, X. o] リスト文字列を文字列に…

Python 例外処理

プログラム実行中にエラーが出てしまうと、その場で処理が停止してしまう。 処理をとりあえず?正常に終了させるために、 異常処理を書いておく必要がある場合があります。 また、Pythonデフォルトのエラーメッセージを表示させるのではなく、 自分好みのメ…

Python クラス

Pythonのクラスで特徴的なのは初期化インスタンスくらいですかね〜。 def __init__() :メソッドがC++でいうようなコンストラクタになります。 アンダーバー2個続けないとダメです。 オーバーロードコンストラクタみたいに、 __init__()メソッドで引数の違う…

Python ファイル入出力

データサイエンスとかやるなら、これ必須やと思います。 整形するときにcsvとか開くやん、、 open/closeとメソッドはありますが、基本with openしておけば間違いないです。 上記だと、ブロックから抜けたら勝手にcloseしてくれるからです。 #ファイル書き込…

Python モジュールのimport

C言語でいうところの#includeですね。 pythonはheaderとかにせず、importして使う感じっす。 さっきの関数のコードを使い回し。 calc_main.py import calc_tax as c total = c.calc_tax(percent=10, reduction=1, price=1000) print (total) total = c.calc_…

Python 関数

関数 pythonの関数ですね〜 重要だと思ったのは、Pythonは関数のオーバーロードができないこと そのため、関数の定義側に、引数のデフォルト値を定義しておく ことで、引数の数が変化しても大丈夫。 あと、何故かデフォルト値を定義してしまったら、その後の…

Python if/while/for

個人的にPythonのfor文はわかりやすいような、クセがあるような感じがします。 if / elif / else else if は elifと書きます まあ、それだけですね、サンプルコードも省略しよっと(すみません) あえていうなら、 if 条件式: #処理 elif 条件式: #処理 else…

Python ディクショナリー

ディクショナリー キーとバリューを同時に格納することができる配列構造のオブジェクトやで〜 ディクショナリーは、{} で囲んで初期化します。 dict = {"key1" : "aaa", "key2" : "bbb", "key3": "ccc"} #参照 print(dict["key1"]) #aaa #要素の追加 dict["k…

Python タプル

タプル 簡単にいうとCでいうようなconstのリスト リスト内の値を外部から変えることはできない。 絶対に固定値をなんども使うことがあるのならば、リストを毎回作成するよりパフォーマンスが良い。 タプル作成の場合は、()で値を代入すること。 smp_tuple = …