; ある村民が何回 nyanpass と発言したかをメモしていく ; 最後に n - 1 の数が1つだけであればそれが答え (defun main () (let* ((n (read)) (memo (make-array n :initial-element 0))) (dotimes (i n) ; i 人目の人が受けた挨拶 (dotimes (j n); j 人目の人がした挨拶 (when (eql 'nyanpass (read)); nyanpass シンボルと等しいときにメモする (incf (aref memo j))))) ; count item sequence &key from-end start end key test test-not ⇒ n ; n - 1 回挨拶した人が一人かどうかで場合分け (princ (if (= (count (1- n) memo) 1) ; 配列が 0 から始まっているので 1 を足す (1+ ; position item sequence &key from-end test test-not start end key ⇒ position ; n - 1 回挨拶した人の番号を探す (position (1- n) memo)) -1)) (terpri))) (main)