Yuki猫のおうち

気ままに自由に日々を生きるエンジニアのブログ

ABC075 B - Minesweeper

今日の問題

atcoder.jp

今日の言語

golang

所要時間

40m 29s

私の解答

github.com

感想

golangにおける文字列操作で、n番目の文字を置換するってどうやるんでしょう?
ちょっと調べた感じでは見つけられませんでした。

私の書いたコードでは、読み込んだ文字列を置換するのではなく、結果文字を文字列連結して別の配列を作ったので実行時間ギリギリになっちゃいましたが、一応ACできました。
十中八苦文字列連結が重たいと思うので、実行速度は改善の余地ありかなと。

参考資料

なし

ABC003 C - AtCoderプログラミング講座

今日の問題

atcoder.jp

今日の言語

golang

所要時間

42m 53s

私の解答

github.com

感想

視聴レートRが大きい動画をK個選んで、視聴レートRが低い順番にK個見ていけば良い。
入力されたRを降順ソートして、K個目から1個目までループを回して計算していけば良い。
よく考えたら、降順ソートしなくても、昇順ソートしてn-k-1個目からn個目まで回せば十分だった。

ARC002 B - 割り切れる日付

今日の問題

atcoder.jp

今日の言語

golang

所要時間

43m 35s

私の解答

github.com

感想

日付の扱いが難しくて手間取りました。
後、最初条件式を「年が月で割りきれるかつ年が日で割り切れる」にしていたんですが、この式は誤りで正しくは「年を月で割った商を日で割る」ということに気がつくまで時間がかかりました。

ABC066 B - ss

今日の問題

atcoder.jp

今日の言語

golang

所要時間

21m 56s

私の解答

github.com

感想

golang、文字列をそのまま配列として扱えるのは楽ですね。
今回は部分配列を取り出すとき、golangだと s[開始index:終了index+1] だと知らずにずっと悩んでいました。

一度 A Tutor of Go をやったほうがいいかもしれませんね。

	s := "0123456789"
	fmt.Println(s[4:10]) // -> "456789"
	fmt.Println(s[4:])   // -> "456789"
	fmt.Println(s[:10])  // -> "0123456789"
	fmt.Println(s[:])    // -> "0123456789"

ABC139 D - ModSum

今日の問題

atcoder.jp

今日の言語

golang

所要時間

27m 45s

私の解答

github.com

感想

等差数列の和でいいという発想に至るまでにちょっと時間がかかりました。