LoginSignup
0
0

【paizaラーニング】レベルアップ問題集 ソートメニュー応用編 「タプルソート」 PHP

Posted at

問題

解答例

usort()を使って配列のソートをしました。usort()関数は、ユーザーが指定した比較関数に基づいて配列をソートします。今回のソートは、以下のルールが適用されます。

・負の整数を返すと、最初の要素が2番目の要素よりも小さいとみなされます。
・正の整数を返すと、最初の要素が2番目の要素よりも大きいとみなされます。
・0 を返すと、最初の要素と2番目の要素は同じとみなされます。

いつものやつ

入力を受け取り、変数と配列に入れてます。

<?php
    list($n, $m, $k) =explode(" ",trim(fgets(STDIN)));
    for($i = 0; $i < $n; $i++) {
        $array[] = explode(" ", trim(fgets(STDIN)));
    }

ユーザー定義のソートを作成

    function customSort($a, $b) {
        global $k;
        $k_index = $k-1;
        
        if($a[$k_index] != $b[$k_index]) {
            // 配列の値が同じじゃない場合
            return $a[$k_index] - $b[$k_index];
        }
        
        // k列目が等しい場合
        for($i = 0; $i < count($a); $i++) {
            if($a[$i] != $b[$i]) {
                return $a[$i] - $b[$i];
            }
        }
        return 0;
        // 値が同じ場合
    }

出力

    usort($array, 'customSort');
    foreach ($array as $pair) {
        echo implode(' ', $pair) . "\n";
    }  
?>

chatgpt君に助けてもらいました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0