AtCoder Beginner Contest 146・171・184・186 A〜B問題

前書き

AtCoder Beginner Contest 146・171・184・186 A〜B問題を解きました。

A問題(ABC146)

  • 難易度:灰
  • 時間:2分
_S=['SUN','MON','TUE','WED','THU','FRI','SAT']
S=input()
i = _S.index(S)
print(7-i)

B問題(ABC146)

  • 難易度:灰
  • 時間:9分

最初にアルファベット配列が必要だと思い、色々調査してました。

import string
N=int(input())
def listAlphabet():
  return list(string.ascii_uppercase)
lis,alphalis,S=[],listAlphabet(),input()

for i in range(len(S)):
  lis.append(alphalis[(alphalis.index(S[i])+N)%26])
print(''.join(lis))

A問題(ABC171)

  • 難易度:灰
  • 時間:1分
A1,A2,A3=map(int,input().split())
ans = 'bust' if A1+A2+A3>=22 else 'win'
print(ans)

B問題(ABC171)

  • 難易度:灰
  • 時間:10分

後半の文字列を逆順に取得しなければいけない事を忘れていて時間を潰してしまいました。
反省です・・・。

S=input()
a,b=S[:len(S)//2],S[::-1][:-len(S)//2]
count=0
for i in range(len(a)):
  if a[i]!=b[i]: count+=1
print(count)

A問題(ABC184)

  • 難易度:灰
  • 時間:1分
a,b=map(int,input().split())
c,d=map(int,input().split())
print(a*d-b*c)

B問題(ABC184)

  • 難易度:灰
  • 時間:5分(1WA)

持ち点が0点以下の時、不正解の場合減点されない事を考慮できていなくてWA。

N,X=map(int,input().split())
S=input()
for i in range(N):
  if S[i]=='o': X+=1
  elif X>0: X-=1  
print(max(0, X))

A問題(ABC186)

  • 難易度:灰
  • 時間:1分
import math
N,W=map(int,input().split())
print(math.floor(N/W))

B問題(ABC186)

  • 難易度:灰
  • 時間:4分
H,W=map(int, input().split())
_min,lis=101,[]
for h in range(H):
  A=list(map(int,input().split()))
  _min=min(min(A),_min)
  lis.append(A)
_sum=0
for i in range(H):
  for j in range(W):
    _sum+=lis[i][j]-_min
print(_sum)

自分なりに要件定義をやっていく

前書き

前回の記事にて「就活でこんなのあったら良い」というアイデアを書きました。
melheaven.hatenadiary.jp

今回はどういうシステムで実装いけば良いのかを書いていこうと思います。

要件定義

要件定義では5つのフェーズが重要とされています。

  1. 解決すべき課題とゴール
  2. システム的に実装したい機能
  3. 要求の実現性(予算・納期・技術)
  4. 検討結果を発注者へ(請求・納期・実装内容)
  5. 双方の合意

上2つを軸に考えていきます。
要求の実現性...?うーん、できるでしょ。知らんけど。
発注者関連は今回は無視します。

目的

「就活や研究室選びにおいて、入室前と入室後のギャップを小さくする」

解決策

「組織に属する人間の内部情報を自由に"組織に属している"と宣言した上で発信できる」

具体案

掲示板情報】
  • 現在属している研究室員・社員の情報を記載
  • 価値観・ビジョン・ギャップなど、組織の情報と人の個性に着目した情報を記載
  • 短時間で複数の組織の情報を獲得できる
  • 1名あたりの記載情報を1ページから得られる
【情報発信】
  • 自分の情報を1ページにまとめられる(CMSのイメージ)
  • ユーザー情報とTwitterを結びつける
  • ユーザーの匿名性を調節可能

機能の定義

今回はまずMVPモデルでの開発を目指します。
まずは"組織"の概念を捨てて、自分の情報を発信できるブログのような機能を開発していきます。(あくまで超超超最低限です)
ただアプリケーションの開発を進める中で"組織"の概念は必要なので、希望要件にて定義しておきます。

【 要件(MVPで開発する超超超最低限)】
  • アカウント登録機能
  • ログイン機能
  • エンジニアのマイページを作成する機能(ブログのような形式で書き換え可能/ CMS
  • エンジニアのマイページを削除する機能
  • エンジニアのマイページを変更する機能
  • エンジニアのマイページを公開・非公開する機能公開されないと組織内ユーザー一覧に表示されるが、ページは表示されない)
  • ページをキーワード検索する機能

必要ページ

  • ログイン・アカウント作成ページ
  • マイページ作成・編集・削除ページ
  • ページ一覧(検索画面)
【 要求(MVP開発に成功したらやりたい)】

エンジニアは組織に属していて、次段階では組織内でマスター権限を持つユーザーがエンジニアの参加を承諾する機能を開発したいです。ここもデータベース設計時に定義しておいた方が良いのですが、今の私には上を開発するだけで精一杯です。

  • エンジニアが組織に参加する事を要求する機能
  • 組織への参加要求を承諾する機能(承諾されないと組織内ユーザー一覧に表示されない)
  • 組織ページを作成する機能
  • ログ記録機能

必要ページ

  • 組織参加承諾ページ(組織のマスター権限を持つユーザーに限り)
  • 組織一覧ページ
  • 組織作成ページ
  • 組織内ユーザー一覧ページ
  • 組織権限管理ページ
【 要望(気が向いたらやる(やらない))】

将来的にこうしたい。する気は今の所ない。

  • 閲覧者も自身のページを作成可能
  • 企業と学生、研究室と学生のマッチング

上記の必須条件で解決される問題

  • 学生は企業に属する多数のエンジニアさんの「将来ビジョン」「価値観」「趣味」「業務」「入社の背景」を読める(学生のメリット)
  • 価値観やビジョンに共感した人材と出会える(企業側のメリット)

今後する事

一先ず必要機能とページを列挙しました。
次は各ページのUI設計、機能設計(処理内容・データ・操作)、データ設計をやっていきます。

qiita.com

「好き」「得意」を生かす 【後編】

前書き

前回の続きです。
melheaven.hatenadiary.jp

楽しく仕事をするための15の質問

10. 自分らしいと感じること

  • 目標に向かってコツコツ取り組む
  • 動機を大切にして行動すること(直感的に行動して失敗しまくっているため)
  • 思考をマイペースに繰り返す

11. 絶対にやりたくないこと

  • 緻密さ・丁寧さが最重視
  • マニュアル通りを求められる仕事

マニュアル通りを求められるのが一番つまらないです。学生時代でも「もっと楽な方法あるやんけ!こっちで実践したろ!」と勝手に違う方法を試していたタイプでした。周りと違う方法で試している事に少しのドキドキ感と結局、最適解だった時の快感がたまらないんです。

  • 後々後悔するような仕事に就きたく無い

あと仕事をする上で後々役に立つノウハウを得られる仕事が良いですね。それは表面的なスキルよりも本質的なスキル。

ここでは「自分の個性を発揮できる方法を見つける」と「将来を見据えている」強みがあります。

12. 長い間、抱えているコンプレックス

  • 頭の回転が遅い気がする

熱中していたり、必死になっている時はそう感じません。ただ「もっと考えなくては」という意識が働いている時に、その意識が頭の回転を阻害してしまいます。対して、自分のペースで物事を考える仕事の方が自分に合ってます。「あらゆる可能性を想定する」「じっくり考える」事では、日々アウトプットを繰り返しながら、継続しています。

  • 自己肯定感が低い

他人と比較してしまう癖があります。それで萎縮してもうダメだ・・・って。でもその分、他人の長所を見つけられる、他人を客観的に分析できている事でしょうか。ただ自分を客観的に分析できているかは不明です。でも自己分析を行う中で、自分を客観視する必要性を感じ取ることはできました。

13. 生産的に感じる、やりがいを感じること

  • 他人からの評価を受けられる

「やりがい」として他人の反応が自分のモチベーションとなります。例えば小学校の時によく絵を描いていましたが、友人が喜んでくれたので続けていました。高校時に数学・物理の予習を続けていたのは、友人に教える事で得るフィードバックを目的に続けていました。自己満足や自己成長で勉強するのもアリですが、案外自分は人のリアクションが気になっていると思います。

いくら好きな事でも人の反応を感じられない事では、継続できません。むしろ目的意識を「自分の楽しさ」と「他人の需要」に定める事で、さらに苦もせず継続できると考えています。

14. 変態的なこだわり

何かを作る時に局所的なこだわりはありました。「ここは絶対こうしたい!」という考えです。これはWeb開発でもデザインや機能、電子工作でも使用モジュールなどにこだわりはありました。でもモノづくりをする上で少しのこだわりは必ずありました。ただ完璧主義と言うタイプではなくて、自分はおおよそ9割の完成度で満足してしまうんですよね。そういった完成度の作品は大体が、自己満足で完結する作品で、目的意識が他人に向いてないんです。

変態的・・・。難しいですね。

15. イラっとしたこと

  • 価値観を受け入れてくれない事

狭い価値観の中で価値観を押し付けられることがイラっとします。他人の価値観は需要すべきで、否定しくないんです。でも逆にそれをやられてしまうと、自分がその場にいたくなくなるんです。

「好き」「得意」「大事」に分割

上記の特徴を「好き!」「得意!」「大事!」に分割して、これら全てに該当する仕事こそが天職だと言うのです。

「好き!」

情報発信

やはり発信・報告・相談など人に自分の考えを伝えることが好きです。
その背景には、「共感を呼びたい」「自分の思考整理」「相手の意見を求める」と言う三点の理由があります。

人の考えを知る

相手の意見・反応を得ることが好きです。よくTwitterで「〇〇さんはどう反応しているのか」を気にしてしまいます。〇〇さんは絶対的に正しいとも限らないので、合理的な行動とは言えませんが、気になって見てしまいます。

自分が作ったサービスや作品が「客観的にどんな反応を受けるのか」を楽しみにできる人間だと思います。それは批判を喰らうことはありますが、賛同や好評を得た時にはそれが快感として感じるのではないかと感じます。

要素が保持する個性

私の好きなモノには共通点があります。異なる個性を保持する要素が複数、存在している事です。

「野球選手」→ バットコントロール型やパワーヒッター型、守備職人型とか・・・
「球団」 → お金持ち球団、育成上手球団、常勝球団とか・・・
「技術」 → AI開発向き言語、静的型付け言語、フレームワークの充実とか・・・
「都市」 → 碁盤の目状、古都、港町、城下町とか・・・

この要素の箱は「球団」でも「技術」でも「人」でも構いません。
各要素が保持している「個性」を生かすアイデア、個性の発信などへ取り組むのもアリですね。

「得意!」

頭の中を表現する・形にする

頭の中で「こういうのを作りたい!」を実際に表現することが得意?です。
具体的には、小・中学生時代は絵画・漫画、大学時代はプログラミング・文章としてアウトプットしたりしています。現在ではプログラミングを勉強したり、再度絵を描き始めたり、自分の表現力の幅を広げようと努力しています。

人が気づかない個性を見つける

自分はニッチなモノに魅力を感じています。そこにはマジョリティが気づかない個性に気づく能力があります。一般的な価値観に拘らず、「好き」なモノには「好き」といって発信できるのも一つの能力ですよね。

これは人の個性、長所をいち早く見つける能力もあります。良いところは積極的に自分も獲得できるように努力します。この能力は人の特徴を分析して、最適な方向性を導き出すといった業種にも繋がるでしょうか(やったことはないですが)。

空気を和ませる

自分は結構大ぴらな性格で、チームの空気が良くなるような話をすることができます。(結構な頻度でスベりますが・・・)
チームで孤立している人間に積極的に話しかける気軽さも持ち合わせています。

目的に対してきちんと取り組める

正課活動や課外活動、インターンシップにて決めた目標に対してコツコツ努力する真面目さもあります。

「大事!」

まずは自分が楽しめる仕事

自分が熱意を持って取り組める事の方が良いです。基本的に努力を努力と感じず、スキルを磨いていく事が理想です。

社会や誰かの為になる仕事

短期的には自己成長ですが、本質的には社会的意義を追求したいです。
例えば「サービスやモノを生み出す」観点で言えば、その人の課題を解決するモノを作り上げる事ですし、「発信」の観点から言えば、共感を獲得して、彼らが抱えている悩み解決の一助となればと考えています。

就活であったらいいなと感じた面白いアイデア

前書き

「就職活動に不満がある!」
就活サイトやイベントのおかげで昔と比べると遥かに企業と学生が密接に繋がれて、実際にその会社で働くことへの実感を感じれました。でも旧態の就活を続けている業界もあります。

今回は就活しながら感じた事、「こういうのあったらいい!」と感じたモノについて書いていきます。

就活での課題

実際に一緒に働く人が見えてこない

  • 実際に一緒に働く上司の顔が見えにくい
  • 入社前と入社後のギャップ
  • 人事さん優しすぎ問題

この3つの課題はセットです。就職して最も恐れているのは「"入社前のイメージ"と"入社後・配属先"のギャップ」。特に大企業では、こういった問題が起こりがちです。IT業界での就職を希望していると、最近はエンジニアの方も前に出てくださっています。それでも人当たりの良く、優秀で話しやすいタイプのエンジニアだと思うんです。人事さんは優しい方が多いですが、実際に一緒に業務をするわけではないですし。

インターンシップに行け!」と言われそうです。が、星の数ほど会社がある中で、それらの会社のエンジニアさん情報を一目でチェックしたいんです。

ベストな会社よりもベターな会社

  • ベストを求めようとしすぎて会社を選択できない
  • ベターな会社で妥協できない

就活で妥協して後悔したくないんです。妥協して入社したけど、「やっぱり合わんかも」となれば「後々後悔する事になりますし・・・」これは避けたい。「ベストな会社に入らなくては・・・!」という想いが裏目に出て逆に優柔不断になってしまいます。

ここで重要なのは「将来のビジョンや自分の理想に完璧に合う会社」なんて探さなくて良いんです。正直全く見つかりません笑。そんな事よりも「将来のビジョンを達成する為に、確実に近づける会社」を選ぶと良い事に気づきました。すると選択肢の幅はかなり広がります。その選択肢から後は社内の雰囲気や人間関係で選べば良いと思います。

欲しいサービスのざっくりしたイメージ

「学生と社員・裏方エンジニアを繋ぐ情報提示板」

エンジニアさん情報には、「将来のビジョン」「重要とする価値観」「入社目的」「理想と現実との乖離」を載せていて、エンジニアさんの人間的個性がよく伝わる掲示板が欲しいと考えました。

私は就活で重要視しているのは、「業種や分野」もありますが、結局「人」であるように感じます。尊敬できる人が多ければ多いほど、「自分もこうなりたい!」と感じて、さらなる自己成長を望めるようになる人も少なくないのでは感じています。

よく似ているサービス

1. 就活サイトの口コミ

就活サイトの口コミには会社の実情が書かれています。

問題点
  • 口コミを書いているのは「会社の事が好きすぎる人」「会社が嫌いな人」に二極化できる
  • 古い情報がそのまま(働き方改革の前の口コミを載せられても・・・)
  • 部署やプロジェクトごとに環境が違うので一概には言えない
  • 匿名的であるので真偽が定かでない
改善点
  • 現在属している社員の情報のみを載せる(匿名でもおk)
  • 価値観・ビジョン・ギャップなど、組織の情報人の個性に着目した情報を載せる
  • できれば非匿名(Twitter IDやあだ名で良い)であって欲しい

2. 企業採用ページ

企業に入社している社員の情報が細かく載っています。

問題点
  • 一部の社員(優秀?)の情報しか載っていない
  • 業務や入社背景について載っているが、人間的個性に関する情報がもっと欲しい
改善点
  • 社員誰でも発信できるような仕組み

3.twitter

こちらはプライベートの情報やその人の個性がよく分かります。

問題点
  • 使っている人もいれば、使ってない人もいる・自分の情報を公開したくない人もいる
  • 一目でその人の個性を掴めない(ツイートを遡らないと)
  • プライベート話しかしない(特に強強エンジニアにありがち)
改善点
  • 自分の個性を1ページにまとめるようにする
  • SNSが好きでない人でも発信しやすいように匿名性を調節できるようにする(人によって匿名レベルを変えられる

4. 就活イベント

就活イベントでエンジニアの方とも直接触れ合えます。

問題点
  • お互いに時間が必要
  • 企業につき1〜2名のエンジニアとしか知り合えない
  • 1企業で知り合うエンジニアが増加するほど、その分企業を見て回る数は減る
改善点
  • 文章・デザインで学生さん・エンジニアさんを知る(→ 多くの人間・会社を知れる)
  • 価値観に共感できる人・学生が多ければ声をかけてみるように仕組み

会社・社員側のメリット

  1. 価値観やビジョンに共感した人材が入ってきやすい
  2. 自分のやりたい事が明確な人材が入ってきやすい
  3. 個人のエンジニアさんが多数の学生の「将来ビジョン」「価値観」「趣味」「業務」「入社の背景」を読める
  4. 早期離職率の低下に繋がる

学生側のメリット

  1. 学生は企業に属する多数のエンジニアさんの「将来ビジョン」「価値観」「趣味」「業務」「入社の背景」を読める
  2. 共感できるエンジニアさんが多い場合は、会社の理念と照らし合わせてコンタクトをとれる
  3. 尊敬できるエンジニアさんを見つけられる
  4. 実際に共に働くエンジニアさんの情報を知れる
  5. 多くのエンジニアさんの「背景」を通して、自分のやりたい事の明確化・就活での悩みへの改善を知れる
  6. 多くのエンジニアさんの「将来ビジョン」を通して、自分の「将来ビジョン」と一致すれば、自分にとって「ベター」な会社であるとはっきりする

まとめ

「学生と社員・裏方エンジニアを繋ぐ情報提示板」あったら使いますか?私は使いたいです。

就活でなくとも研究室配属やアルバイト選びでも使えそうですね。
自分の属している研究室なんか、自分が夜に趣味で居座っているだけなのに、夜間ずっと電気が点いている事から、「超絶ブラック研究室だ!」と3回生に広まっているらしいので・・・。こういった不幸によるギャップを解消したいです。