コーディングテスト練習記録
12785 ワード
2022.01.30 37日目
白駿2776号(暗記王)
質問する
蓮紙は記憶力が強い.だから私は一日に見たすべての精髄を覚えています.しかし、信じられない東圭は記憶力をテストすることにした.東圭は蓮鐘について行き、蓮鐘が一日見た整数を「マニュアル1」に書いた.これに基づいて、彼が真の暗記王かどうかを知るために、東圭は延宗にM個の質問をした.質問の内容は「今日Xという整数を見たことがありますか?」はい.延宗はすらすらと答え、東奎は延宗が見た数位を『マニュアル2』に記した.家に帰ってきたドンギュは、答えが正しいかどうかを確認しようとしたが、延宗についてきて疲れたので助けを求めた.東圭を助けるため、「マニュアル2」の順に数字ごとにプログラムを作成し、「マニュアル1」に1があれば、なければ0を出力します.
私の答え二分探索 を利用する
最小値、最大値、中間値としてインデックスを使用する .出力が多い場合はStringBuilder を用いる. BufferedReader, StringTokenizer Set->は を含む
白駿2776号(暗記王)
質問する
蓮紙は記憶力が強い.だから私は一日に見たすべての精髄を覚えています.しかし、信じられない東圭は記憶力をテストすることにした.東圭は蓮鐘について行き、蓮鐘が一日見た整数を「マニュアル1」に書いた.これに基づいて、彼が真の暗記王かどうかを知るために、東圭は延宗にM個の質問をした.質問の内容は「今日Xという整数を見たことがありますか?」はい.延宗はすらすらと答え、東奎は延宗が見た数位を『マニュアル2』に記した.家に帰ってきたドンギュは、答えが正しいかどうかを確認しようとしたが、延宗についてきて疲れたので助けを求めた.東圭を助けるため、「マニュアル2」の順に数字ごとにプログラムを作成し、「マニュアル1」に1があれば、なければ0を出力します.
私の答え
最小値、最大値、中間値として
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
for (int i = 0; i < T; i++) {
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
int[] nArr = new int[N];
StringTokenizer st = new StringTokenizer(br.readLine());
for (int x = 0; x < N; x++) {
nArr[x] = Integer.parseInt(st.nextToken());
}
Arrays.sort(nArr);
int M = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
for (int z = 0; z < M; z++) {
int value = Integer.parseInt(st.nextToken());
int min = 0;
int max = N - 1;
boolean answer = false;
while (min <= max) {
int mid = (min + max) / 2;
if (nArr[mid] < value) {
min = mid + 1;
} else if (nArr[mid] > value) {
max = mid - 1;
} else {
answer = true;
break;
}
}
sb.append(answer ? 1 : 0).append("\n");
}
System.out.print(sb);
}
}
}
考えるReference
この問題について(コーディングテスト練習記録), 我々は、より多くの情報をここで見つけました https://velog.io/@jgjgill/코딩테스트-연습-기록-2zkgi4mhテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol