AtCoder Beginner Contest 154 A,B,C問題のPHPでの私なりの解法

A問題

<?php
fscanf(STDIN, '%s %s', $aKey, $bKey);
fscanf(STDIN, '%s %s', $cnt[$aKey], $cnt[$bKey]);
fscanf(STDIN, '%s', $target);
$cnt[$target]--;
echo $cnt[$aKey]. ' ' . $cnt[$bKey];

連想配列としてそれぞれキーとなる文字列と、値となるボールの数を格納して、「ボールを1個選んで捨てる」対象の方をデクリメントすれば良いです。

B問題

<?php
fscanf(STDIN, '%s', $str);
$len = strlen($str);
for ($i=0; $i < $len; $i++) { 
    echo 'x';
}

入力文字列の長さ分だけ、”x”を出力すれば良いです。

C問題

<?php
fscanf(STDIN, '%d', $n);
$nums = explode(' ', trim(fgets(STDIN)));
$cnts = array_count_values($nums);
rsort($cnts);
if ($cnts[0] > 1) {
    echo "NO";
} else {
    echo "YES";
}

array_count_values関数では出現回数を数えた結果が配列として返るので、それを値降順ソートして1つ目の要素の値が1より大きい場合にのみ重複があるとすれば良いです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*
*