Atcoder Beginner Contest 014 B問題 解説

【学んだこと】
・二進数変換
・ビット

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <map>
#include<cstdio>
#include<functional>
#include <bitset>
using namespace std;

int main()
{
	int n, x, y, ans = 0;
	string z;
	
	cin >> n >> x ;
	bitset<20> b(x);

	for (int i = 0; i < n; i++) {
		cin >> y;

		if (b[i] == 1) {
			ans += y;
		}
	}

	cout << ans << endl;

	return 0;
}

bitset<20>でビットのサイズを決めて
b(x) で入力された十進数を二進数に変換。
b[]で特定ビット1を指定して1だった場合に加算する。
ビットは右から数える。

ビットを初めて学んだから解けなくて悔しい

ppp-lab.sakura.ne.jp

Atcoder Beginner Contest 085 感想と解説

Atcoder Beginner Contest 085の感想。
B問題まではさっと解けてうれしかった。
C問題は計算量の問題でアルゴリズムをもっと勉強しないといけないなあ。

A問題

文字列の4番目の文字を変える問題。
replaceを使ったが、S[3] = '8'でできたみたい。

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <map>
#include<cstdio>
using namespace std;
 
int main()
{
	string S;
 
	cin >> S;
	
 
	S.replace(3, 1, "8");
	cout << S << endl;
 
	return 0;
}

B問題

下の餅より上の餅が小さいときだけ積み重さねることができる条件で
何段積み上げることができるかという問題。
配列内での同じ数字を削除すればいいので、
重複削除を行えばおけ。

uniqueで重複削除を行い、残ったゴミをeraseで削除。
Atcoderの解説ではを使えばもっと楽にできるらしい。
setが重複不可のコンテナを作ってくれる。
もっと勉強しななあ。

参考
qiita.com


#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <map>
#include<cstdio>
using namespace std;
 
int main()
{
	int N, x;
	vector<int> d;
 
	cin >> N;
	
	for(int i=0; i<N; i++)
	{
		cin >> x;
		d.push_back(x);
		sort(d.begin(), d.end());
		d.erase(unique(d.begin(), d.end()),
                            d.end());
	}
	cout << d.size() << endl;
	return 0;
}

C問題

計算量に気をつける問題。
本番はよくわからずにあきらめちゃったので、解説を見て
復習。
O(N3乗)だとTLEなのでO(N2乗)で実装しないといけない。

|

#include
#include
#include
#include
#include
#include
using namespace std;

int main()
{
int N, Y;
int x, y, z;
x = y = z = 0;

cin >> N >> Y;
for (x = 0; x <= N; x++) {
for (y = 0; y <= N - x; y++) {
z = N - x - y;
if (x + y + z == N && 10000 * x + 5000 * y + 1000 * z == Y) {
cout << x << " " << y << " " << z << endl;
return 0;
}
}
}

cout << "-1 -1 -1" << endl;
return 0;
}

C問題まで解けるようになりたい。

Atcoder Beginner Contest 008 B問題 解説

【学んだこと】
配列の最頻値を求めようとしたが、途中でギブアップ。
連想配列で同じ要素が出てきたら加算する発想がなかった。
連想配列の知識が乏しいので勉強します。
あと、scanfで標準入力した方が処理早いらしい。

参考
C++ 連想配列クラス std::map 入門

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <map>
#include<cstdio>
using namespace std;

int main()
{
	int N, max = 0;
	string S, ans;
	/*scanf("%d", &N);*/
	map<string, int> m;
	cin >> N;
	for (int i = 0; i < N; i++) 
	{
		cin >> S;
		m[S]++;
		if (max < m[S]) {
			max = m[S];
			ans = S;
		}
	}
	cout << ans << endl;
	return 0;
}

m[S]++;は変数m[S]に加算しているという認識でおーけーなのかな
よくわからんから教えてけろ
terataleおじさんに聞こう。

Atcoder Beginner Contest 007 B問題 解説

【学んだこと】
・文字列比較
C++の標準ライブラリにがあり、楽に文字列比較ができた。
は便利だから覚えておこう。

• string str; 空の文字列を宣言
• str[i] i番目の文字を参照
• str = str2 文字列の代入
• str + str2 文字列の連結
• str.size() 文字列の長さ
• str == str2 文字列の比較
• str <= str2 str > str2 文字列の辞書順比較
• str.find(str2) 文字列の検索(strの中にstr2が見つかればその位置を示す数値を、見つからなければ-1を返す)
• str.rfind(str2) 文字列を後ろから検索
• str.substr(i, len) i番目からlen文字分の部分文字列を取得
参考
C++(標準ライブラリの紹介) - アルゴリズム講習会

#include <iostream>
#include <string>
using namespace std;

int main()
{
	string str = "a";
	string A;
	cin >> A;
	
	if (str < A) {
		cout << str << endl;
	}
	else if(A == "a") {
		cout << -1 << endl;
	}
	return 0;
}

string a = "a";がすごい気持ち悪い
もっと良い書き方ないかしら

精進します

Life is Tech!メンターになって良かったこと

 

主に中高生に向けてプログラミングやデザイン、映像などのIT教育を提供している「Life is Tech!」のメンターになってから約一年。

メンターとしての体験はまだ浅いが、大学生活の中でもかなり濃い体験をさせてもらっている。

10期のリーダーズの募集も始まったとのことなので、メンターになるメリットや面白さを少しでも伝えられたらなあと思う。

 

詳しくはココ見てね↓

life-is-tech.com

 

スペックごりごりの大学生と会える

本当に不思議なことであるが同期や先輩のメンターのスペックがやたらと高い。

30分でアプリをさらっと作れたり、IT系の大会の賞取ったりと大学生の技術力ランキングの大半をメンターが担っているのでないかと思うくらい本当に技術力が高い。

デザイン、映像、プログラミングの分野それぞれで化け物級の人が所属している。

IT未経験でぽっと出のぼくからしたらこの環境はとてつもなく刺激的で目標となる人が見つかったことが本当に良かったことだと思う。

おれももっとがんばらなくちゃならん。

意識より技術力高くしたいんじゃああああああとくすぶってる人には本当におすすめのコミュニティなのでぜひ。

 

教育に関心を持つことができる

メンターになると中高生と数日間みっちりと向き合い、チームビルディングをしたり、技術を教えなくてはならない。

その中で、彼らの成長や表情の変化を見るのが本当に楽しい。

大変なことも多いけど、成長が見れるのと彼らがかわいいから頑張ってしまうし、

頑張ってる年下を見て自分も奮起させることができる。

ITだけでなく、教育系に興味がある人もうってつけの場であることを表明しておく。

 

スキルアップにつながる

メンターは教える立場なので当たり前だが、技術力を求められるし、チームをまとめられるコミュニケーション面も求められる。

得意な分野はさらに伸ばさなくてはいけないし、苦手な分野があると、チームが分裂するなどかなり困ってしまう状況が起こってしまうため、努力が必要になる。

コミュニケーション、技術力、動画制作など列挙するだけでもかなりの勉強量が必要だが、同時に自分の関心も広げることができる場だと思う。

ぼくはプログラミングのコースだが、最近映像やデザインにも面白いなあと思い、苦手ではあるが少しずつ勉強している。

自分の幅を広げる面白いインターンシップであるのでぜひ挑戦してみてほしい。

 

さいごに

えらそうに書いてきたが、まだぼくもキャンプ三回しか入ってないし、独学でプログラミング少しやっただけの状態で研修を受けてきたからまだまだ未熟な部分が多い。

ただ、キャンプ終了後のあのエモさを少しでも多くの人に体験してもらいたい!という気持ちでいっぱいである。

技術力は勉強したらつくのでそんなに気にせず、どんどん募集してね。

10期のリーダーズも面白い人たくさんいたらいいなあ。

https://life-is-tech.com/leaders/

【大学生対象】中高生を導くITリーダー創造インターンシッププログラム|Life is Tech ! Leaders

 

 

 

 

劣等感について

fighting

【劣等感について】

劣等感に苛まれ、つらくなる時が時々ある。

自分の才能の無さや努力不足に嫌になり、自暴自棄になる。

一月前くらいに劣等感について調べ始め、一時期ブームだった「嫌われる勇気」を読みながら劣等感についてずっと考えて、自分なりに少しまとまったので書き記します。

 

【劣等感と劣等コンプレックス】
・劣等感
劣等感とは「理想や目標に向かっている際、理想に到達できていない自分に対して劣っている感覚を抱くこと」である。
劣等感自体は、理想を追い求める上で出てくる感情であり、使い方さえ間違えなければ、努力や成長の促進剤となる。

・劣等コンプレックス
自分の劣等感を言い訳に使い始めた状態のことを劣等コンプレックスという。
「学歴が低いから成功できない」「器量が低いから結婚できない」など何の因果関係もないのに納得させてしまう状況のこと。

【考えたこと】
自分は今まで「劣等感を無くさなければ」とばかり考えていたが、努力していたら起こる当たり前の感情らしい。
みんなの発言などを見ていても劣等感は誰にでもあるもので悩んでいることは一人じゃなんだと少し安心した。
劣等感とうまく付き合うこと、利用することを目標にしたい。

誰かに劣等感を感じるときは必ず「自分が欲しいものをその人が持っている」状況にあると思う。
その欲しいモノが何かを明確にして、自分が欲しているものに対して努力することが劣等感を利用することにつながる。
自分の場合は仕事のできる人に劣等感を抱きやすいので「自分は仕事ができるようになりたいんだ。そのために努力しよう」となればよい方向に向かうことができる。

就活とか人生の岐路に立つと凄まじくナイーブになるので感情に向き合わないといけないときがある。

乗り越えていきましょう。

今年こそランニングを始めようと思ってる皆様へ

run

あけましておめでとうございます!!!!!!!!!

年が明けたとのことで、今年の目標を考えている人も多いことでしょう。

中には「今年こそランニングするべ!」と意気込んでいるかたもいらっしゃるかもしれません。

そんな方々のために三日坊主で終わらせないランニングのコツを伝授しましょう!

 

目標を設定すること

目標を設定しないことには何にも始まりません。ゴールに近づいているワクワク感もなければ、「なぜ私は走っているのだ?」と虚無感に襲われます。

まずなぜ走りたいのか考えましょう。

高すぎる目標でなくても良いので自分の理想像に少しでも近づけられるものならおっけーです。

目標を設定する際のポイントは「数字を入れる」ことです。

「5kg痩せる」、「毎朝15分走る」、「フルマラソンを4時間切る」などなど、数字を入れるだけで具体性が増し、目標が明確になります。

目標設定ができただけで満点!

 

記録をつける

目標設定の後は日々のランニングの記録をつけましょう!

記録をつけることで以前の自分より早くなっていることを実感できたりします。

過去の自分との比較でモチベーションがグンっと上がるので記録は必ずつけましょう

 

記録するのにおすすめのアプリはこれ!

www.nike.com

 

GPSでランニングの距離を測ってくれたり、ペースもすべて記録してくれます。

トレーニングメニューも作ってくれるなど優秀。

控えめに言って神アプリです。

ランニング友達が欲しいのでよかったら友達になってください(´・ω・`)

 

ランニングシューズを買うこと

ランニングシューズを必ず買いましょう!!

ぼくはスニーカーで走りまくって、右膝を壊し、休むのを余儀なくされました・・・

走るのは足に体重3倍負荷がかかると言われるので負荷を軽減してくれる靴で走りましょう。

 

13000円もするたっかいランニングシューズを買ってから膝の痛みも治り、スピードも出て走りやすくなりました。

多少高くても健康のためにランニングシューズの購入をおすすめします。

 

習慣化すること

ここまで書いてきましたがランニングの最大の壁「習慣化」です。

どうしても雨が降ったり、忙しかったりすると走れず、モチベーションがぷつりと切れてしまいます。

 

習慣化はとんでもなく難しいのでちょっとしたアドバイスを書きます

1、自分に甘くなること

ランニングを始めただけでもあなたはチャレンジャーです。

自分をほめたたえましょう。

もし、つらくなって出来ない日があっても決して自分を責めないでください。

挫折する人はたいてい、自分に厳しかったり、目標が高すぎたりする人が多いです。

まずは続けることを念頭に置いて走りましょう。

自分に激アマで続けましょう。

 

2、辞める習慣を決めること

ランニングという習慣が一日に入ることは他の時間が減るということです。

どの時間を減らすかをまず決めましょう。

娯楽の時間を減らすのは心苦しいですが、理想の自分を得るための第一歩です。

断腸の思いでランニングの時間を作りましょう。

 

3、人に目標を言いふらすこと

Twitterでもなんでも自分の目標を宣言しましょう。

逃げたらダサいと思われる環境を作ってしまいましょう。

好きな人ならなおさら効果的です。

有言実行はかっこいいぞ!!!

 

ランニングは楽しいぞ

ランニングはとっても楽しいことです。

学生時代の体育は強制でやらされ、運動が苦手になった人も多いと思います。

しかし、自分で目標を決めて走ることは体育とは比較にならないくらい面白いものです。

新年の意識が高い内に走りだしましょう!

僕も1/28にあるハーフマラソンに向けてがんばります!!!!