paizaラーニングのレベルアップ問題集「線形探索メニュー」からの出典です。
paiza.jp
Javaによる「線形探索メニュー」問題集 【特殊な探索】 成績優秀者の列挙 2 と、それらの提出コードの解答例です。
僕が作成、提出したコードは、以下のとおりです。
・STEP: 1 偶数の探索
/* Javaによる「線形探索メニュー」問題集 【特殊な探索】 成績優秀者の列挙 2 STEP: 1 偶数の探索 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(); for(int i = 0; i < n; i++){ int a = sc.nextInt(); if(a%2 == 0){ System.out.println(i+1); break; } } } }
・STEP: 2 奇数の探索
/* Javaによる「線形探索メニュー」問題集 【特殊な探索】 成績優秀者の列挙 2 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 cnt = 0; for(int i = 0; i < n; i++){ int a = sc.nextInt(); if(a%2 != 0){ cnt = i; } } System.out.println(cnt+1); } }
・STEP: 3 条件付き最小値
/* Javaによる「線形探索メニュー」問題集 【特殊な探索】 成績優秀者の列挙 2 STEP: 3 条件付き最小値 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[] lis = new int[n]; for(int i = 0; i < n; i++){ int a = sc.nextInt(); lis[i] = a; } int k = sc.nextInt(); int ans = 100; for(int i = 0; i < n; i++){ if(k <= lis[i] & lis[i] < ans){ ans = lis[i]; } } System.out.println(ans); } }
・STEP: 4 条件付き最大値
/* Javaによる「線形探索メニュー」問題集 【特殊な探索】 成績優秀者の列挙 2 STEP: 4 条件付き最大値 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[] lis = new int[n]; for(int i = 0; i < n; i++){ int a = sc.nextInt(); lis[i] = a; } int k = sc.nextInt(); int ans = -100; for(int i = 0; i < n; i++){ if(k >= lis[i] & lis[i] > ans){ ans = lis[i]; } } System.out.println(ans); } }
・STEP: 5 点と点の距離
/* Javaによる「線形探索メニュー」問題集 【特殊な探索】 成績優秀者の列挙 2 STEP: 5 点と点の距離 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[][] lis = new int[n][2]; for(int i = 0; i < n; i++){ int x = sc.nextInt(); int y = sc.nextInt(); lis[i][0] = x; lis[i][1] = y; } int k = sc.nextInt(); int cnt = 0; for(int i = 0; i < n; i++){ if(Math.abs(lis[i][0]-lis[n-1][0]) + Math.abs(lis[i][1]-lis[n-1][1]) <= k){ cnt++; } } System.out.println(cnt); } }
・STEP: 6 長方形に含まれる点
/* Javaによる「線形探索メニュー」問題集 【特殊な探索】 成績優秀者の列挙 2 STEP: 6 長方形に含まれる点 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[][] lis = new int[n][2]; for(int i = 0; i < n; i++){ int x = sc.nextInt(); int y = sc.nextInt(); lis[i][0] = x; lis[i][1] = y; } int xs = sc.nextInt(); int xt = sc.nextInt(); int ys = sc.nextInt(); int yt = sc.nextInt(); int cnt = 0; for(int i = 0; i < n; i++){ if(xs <= lis[i][0] & lis[i][0] <= xt & ys <= lis[i][1] & lis[i][1] <= yt){ cnt++; } } System.out.println(cnt); } }
・STEP: 7 成績優秀者の列挙 1
/* Javaによる「線形探索メニュー」問題集 【特殊な探索】 成績優秀者の列挙 2 STEP: 7 成績優秀者の列挙 1 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(); String[] foo = new String[n]; int[] bar = new int[n]; for(int i = 0; i < n; i++){ String s = sc.next(); int t = sc.nextInt(); foo[i] = s; bar[i] = t; } int k = sc.nextInt(); for(int i = 0; i < n; i++){ if(bar[i] >= k){ System.out.println(foo[i]); } } } }
・FINAL問題 【特殊な探索】 成績優秀者の列挙 2
/* Javaによる「線形探索メニュー」問題集 【特殊な探索】 成績優秀者の列挙 2 FINAL問題 【特殊な探索】 成績優秀者の列挙 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(); String[] foo = new String[n]; int[] bar = new int[n]; for(int i = 0; i < n; i++){ String s = sc.next(); int t = sc.nextInt(); foo[i] = s; bar[i] = t; } int k = sc.nextInt(); int l = sc.nextInt(); for(int i = 0; i < n; i++){ if(k <= bar[i] & bar[i] <= l){ System.out.println(foo[i]); } } } }
paizaラーニングのレベルアップ問題集については、ユーザー同士で解答を教え合ったり、コードを公開したりするのは自由としています。
また授業や研修、教材などにも利用できるそうです。