paizaラーニングのレベルアップ問題集「二重ループメニュー 」からの出典です。
paiza.jp
Javaによる「二重ループメニュー 」問題集(活用編)と、それらの提出コードの解答例です。
僕が作成、提出したコードは、以下のとおりです。
・STEP: 1 行列の転置
/* Javaによる「二重ループメニュー 」問題集(活用編) STEP: 1 行列の転置 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ import java.util.Scanner; import java.util.Arrays; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int k = sc.nextInt(); int[][] num1 = new int[n][k]; for(int i = 0; i < n; i++){ for(int j = 0; j < k; j++){ int x = sc.nextInt(); num1[i][j] = x; } } int[][] num2 = new int[k][n]; for(int i = 0; i < n; i++){ for(int j = 0; j < k; j++){ num2[j][i] = num1[i][j]; } } for(int i = 0; i < k; i++){ for(int j = 0; j < n; j++){ if(j < n-1){ System.out.print(num2[i][j] + " "); }else{ System.out.println(num2[i][j]); } } } } }
・STEP: 2 かけ算表
/* Javaによる「二重ループメニュー 」問題集(活用編) STEP: 2 かけ算表 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] tempo = new int[n]; int[][] num = new int[n][n]; for(int i = 0; i < n; i++){ int m = sc.nextInt(); tempo[i] = m; } for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++){ num[i][j] = tempo[i] * tempo[j]; if(j < n-1){ System.out.print(num[i][j] + " "); }else{ System.out.println(num[i][j]); } } } } }
・STEP: 3 素数の個数
/* Javaによる「二重ループメニュー 」問題集(活用編) STEP: 3 素数の個数 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int cnt = 1; if(n == 2){ System.out.println(cnt); }else{ for(int i = 2; i <= n; i++){ for(int j = 2; j < i; j++){ if(i%j == 0) break; if(j == i-1) cnt++; } } System.out.println(cnt); } } }
・STEP: 4 log2
/* Javaによる「二重ループメニュー 」問題集(活用編) STEP: 4 log2 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int cnt = 0; for(int i = 1; i <= n; i++){ int num = i; while(num%2 == 0){ num = num/2; cnt++; } } System.out.println(cnt); } }
・STEP: 5 スーパー鳩時計
/* Javaによる「二重ループメニュー 」問題集(活用編) STEP: 5 スーパー鳩時計 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ public class Main{ public static void main(String[] args){ for(int t = 0; t < 24; t++){ for(int m = 0; m < 60; m++){ int foo = t + m; if(foo%15 == 0) System.out.println("FIZZBUZZ"); else if(foo%3 == 0) System.out.println("FIZZ"); else if(foo%5 == 0) System.out.println("BUZZ"); else System.out.println(); } } } }
・STEP: 6 格子点
/* Javaによる「二重ループメニュー 」問題集(活用編) STEP: 6 格子点 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ public class Main{ public static void main(String[] args){ int ans = 0; for(int x = 1; x < 98; x++){ for(int y = 1; y < 98; y++){ if(x*x*x + y*y*y < 100000){ if(ans <= x*y){ ans = x*y; } } } } System.out.println(ans); } }
・STEP: 7 お金の支払い
/* Javaによる「二重ループメニュー 」問題集(活用編) STEP: 7 お金の支払い https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int x = sc.nextInt(); int y = sc.nextInt(); int z = sc.nextInt(); int ans = 3001; int foo = z/x; int bar = z/y; for(int i = 0; i <= foo; i++){ for(int j = 0; j <= bar; j++){ int k = x*i + y*j; if(k <= z && i+j+(z-k) < ans){ ans = i+j+(z-k); } } } if(ans == 0){ System.out.println(z); }else{ System.out.println(ans); } } }
・FINAL問題: 二重ループ:活用編 三角形の探索
/* Javaによる「二重ループメニュー 」問題集(活用編) FINAL問題: 二重ループ:活用編 三角形の探索 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int cnt = 0; for(int i = 1; i <= n-2; i++){ for(int j = 1; j < n-i; j++){ int k = n - (i+j); if(i*i == j*j + k*k){ cnt++; } } } if(cnt == 0){ System.out.println("NO"); }else{ System.out.println("YES"); } } }
paizaラーニングのレベルアップ問題集については、ユーザー同士で解答を教え合ったり、コードを公開したりするのは自由としています。
また授業や研修、教材などにも利用できるそうです。