目標発表会と社内イベント

こんにちはしましまです。

社員の皆さん、先日はイベントお疲れ様でした。
今回はこのイベントについて取り上げます。

目標発表会

私は今回、PHPの認定試験の取得を目標としましたが、試験日が目標発表会の翌日となってしまったため、
当日に合否の報告をすることができませんでした。
そのため今回は、行った勉強方法や(勉強して)良かったこと/苦労したことなどを取り上げました。

そして認定試験も終わり、結果がでましたので、こちらで報告させていただきます。

無事合格しました

目標発表会でも取り上げましたが、模擬試験の数が少なく、それが一番の懸念点でしたが、合格できてよかったです。

社内イベント(AtCoder)

私の結果としては問題の5問中2問を提出しました。
3問目は問題を確認するも残り時間が少なく、問題を読み、ロジックが思いついたところで時間切れとなりました。

このことが心残りということもあり、個人的に解いてみましたので、こちらに掲載しておきます。

<?php
  $S = (int)trim(fgets(STDIN));
  $Q = explode(" ", trim(fgets(STDIN)));
  $A = explode(" ", trim(fgets(STDIN)));
  $B = explode(" ", trim(fgets(STDIN)));
 
  $counter = 0;
  $isOver = false;
  
  while (true) {
    if (in_array(0, $Q)) {
      $zeroIndex = array_search(0, $Q);

      if ((int)$A[$zeroIndex] !== 0 && (int)$B[$zeroIndex] !== 0) {
        break;
      }
    }
    $percent = [];
    for ($i = 0 ; $i < $S; $i++) {
      if ((int)$Q[$i] !== 0) {
        $tmpA = $A[$i] / $Q[$i] * 100;
        $tmpB = $B[$i] / $Q[$i] * 100;
      } else {
        $tmpA = 0;
        $tmpB = 0;
      }
        if (count($percent) === 0) {
          $percent['A'] = $tmpA;
          $percent['B'] = $tmpB;
          continue;
        }
        
      
      if ($percent['A'] < $tmpA) {
        $percent['A'] = $tmpA;
      }
      
      if ($percent['B'] < $tmpB) {
        $percent['B'] = $tmpB;
      }
    }
    $target = $B;

    if ($percent['A'] < $percent['B'] || $percent['B'] === 0) {
      $target = $A;
    }
    
    if ($percent['A'] === 0) {
      $target = $B;
    }

    $isOver = false;
    for ($i = 0 ; $i < $S; $i++) {
      if ($Q[$i] < $target[$i]) {
          $isOver = true;
          $break;
      }
      $Q[$i] -= $target[$i];
    }
    if ($isOver === true) {
      break;
    }
    $counter++;
  }
  
  print_r($counter);

実は提出したものの、warningが1件出てたので、そちらは見直しが必要そうです。

しかし、思いついた案が的を得ていたので、個人的にはスッキリしました。

ロジック的には料理Aと料理Bの使用する材料が保有している材料の何%を占めるかを比較し、割合の少ないほうの料理を作成していくというものです。

さいごに

今回のイベントで、なかなかお話する機会がない大阪オフィスの方と盛り上がることができてよかったと思いました。

次回のイベントも楽しみにしています。