pre{ white-space: pre; } .entry-content pre{ word-wrap: normal; }

yukicoder No.239 にゃんぱすー

列ごとに"nyanpass"を数えていき、ちょうど n - 1個 だけ"nyanpass"が存在することがわかれば、その時の列番号を返せばいい。
ただし、2列以上にn - 1 だけ"nyanpass"以上にすると特定することはできないので、その時は -1 を返す。

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		String[][] a = new String[n][n];
		for(int i = 0 ; i < n ; i++) {
			for(int j = 0 ; j < n ; j++) {
				a[i][j] = sc.next();
			}
		}
		int ret = 0; int cnt1 = 0;
		for(int i = 0 ; i < n ; i++) {
			int cnt2 = 0;
			for(int j = 0 ; j < n ; j++) {
				if(a[j][i].equals("nyanpass")) {
					cnt2++;
					if(cnt2 == n - 1) {
						cnt1++;
						ret = i + 1;
					}
				}
			}
		}
		if(cnt1 == 1) {
			System.out.println(ret);
		} else {
			System.out.println(-1);
		}
 	}
}

分からなかったから他の人のコード見たけど、a[j][i] みたいに i と j を逆にすれば列ごとに見れることを学べた。
ただ星1にしては難しかった気がする。