[Java]白俊1764号
白峻1620号です.
https://www.acmicpc.net/problem/1764
質問する
両方が入っている人を知るために
2番目のwhileサイクルでは、及ばない人の名前を
ここではmapのgetOrDefaultメソッドを使用して値を増やします.
これで同じ名前が何度入ったかを把握できます.
このデータ型からvalue値を取得し、valueが2より大きいキー値をlistに入れるだけです.
私たちは正しい答えを得ることができます.
聴力が悪い以外に問題があるのではないかと心配しています.
コード#コード#
https://www.acmicpc.net/problem/1764
質問する
金ジンヨンが出没した人のリストと聞いたことのない人のリストを渡す時、聞いたことのない人のリストを手に入れるプログラムを作ってください.
入力
1行目は聞いていない人の数N,見ていない人の数Mを与えた.続いて2行目からN行目に出没した人の名前とN+2行目から聞いたことのない人の名前を順に与えます.名前にはスペースがなく、アルファベットの小文字だけで、長さは20以下です.N,Mは500000以下の自然数です.
聞いたことのないリストには重複した名前はなく、聞いたことのないリストも同じだ.
しゅつりょく
リスニング雑誌の数とリストをアルファベット順に印刷します.
入力例 3 4
ohhenrie
charlie
baesangwook
obama
baesangwook
ohhenrie
clinton
サンプル出力 2
baesangwook
ohhenrie
考える
問題はそんなに難しくない.
聞いたことのない人と見たことのない人とが重なる人数.
名前をプリントアウトすればいいです.
アクション
1行目は聞いていない人の数N,見ていない人の数Mを与えた.続いて2行目からN行目に出没した人の名前とN+2行目から聞いたことのない人の名前を順に与えます.名前にはスペースがなく、アルファベットの小文字だけで、長さは20以下です.N,Mは500000以下の自然数です.
聞いたことのないリストには重複した名前はなく、聞いたことのないリストも同じだ.
しゅつりょく
リスニング雑誌の数とリストをアルファベット順に印刷します.
入力例 3 4
ohhenrie
charlie
baesangwook
obama
baesangwook
ohhenrie
clinton
サンプル出力 2
baesangwook
ohhenrie
考える
問題はそんなに難しくない.
聞いたことのない人と見たことのない人とが重なる人数.
名前をプリントアウトすればいいです.
アクション
3 4
ohhenrie
charlie
baesangwook
obama
baesangwook
ohhenrie
clinton
サンプル出力 2
baesangwook
ohhenrie
考える
問題はそんなに難しくない.
聞いたことのない人と見たことのない人とが重なる人数.
名前をプリントアウトすればいいです.
アクション
2
baesangwook
ohhenrie
問題はそんなに難しくない.
聞いたことのない人と見たことのない人とが重なる人数.
名前をプリントアウトすればいいです.
アクション
HashMap<String, Integer> map = new HashMap<>();
ArrayList<String> list = new ArrayList<>();
まず、聞いたことのない人のリストを保存するmap
を作成します.両方が入っている人を知るために
list
を作りました. while(N --> 0) {
String name = br.readLine();
map.put(name, map.getOrDefault(name, 0)+1);
}
while(M --> 0) {
String name = br.readLine();
map.put(name, map.getOrDefault(name, 0)+1);
}
最初のwhileサイクルでは、聞いたことのない人の名前をmap
に入れます.2番目のwhileサイクルでは、及ばない人の名前を
map
に再入れます.ここではmapのgetOrDefaultメソッドを使用して値を増やします.
map.put(name, map.getOrDefault(name, 0)+1);
key値name、すなわち、同名の人が現れた場合、value値を1増加させる.最初にないキー値を入力するとvalueは0で始まりますが、重複する名前を入力すると徐々に増加します.これで同じ名前が何度入ったかを把握できます.
Iterator<Entry<String, Integer>> it = map.entrySet().iterator();
int count = 0;
while(it.hasNext()) {
Entry<String, Integer> entrySet = (Entry<String, Integer>)it.next();
if(entrySet.getValue() >= 2) {
count++;
list.add(entrySet.getKey());
}
}
現在、map
のkeyとvalueを出力するために、EntrySet型歪みを作成しました.このデータ型からvalue値を取得し、valueが2より大きいキー値をlistに入れるだけです.
私たちは正しい答えを得ることができます.
TMI
聴力が悪い以外に問題があるのではないかと心配しています.
コード#コード# import java.io.*;
import java.util.*;
import java.util.Map.Entry;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
HashMap<String, Integer> map = new HashMap<>();
ArrayList<String> list = new ArrayList<>();
while(N --> 0) {
String name = br.readLine();
map.put(name, map.getOrDefault(name, 0)+1);
}
while(M --> 0) {
String name = br.readLine();
map.put(name, map.getOrDefault(name, 0)+1);
}
Iterator<Entry<String, Integer>> it = map.entrySet().iterator();
int count = 0;
while(it.hasNext()) {
Entry<String, Integer> entrySet = (Entry<String, Integer>)it.next();
if(entrySet.getValue() >= 2) {
count++;
list.add(entrySet.getKey());
}
}
Collections.sort(list);
sb.append(count+"\n");
for(String name : list) {
sb.append(name+"\n");
}
System.out.println(sb);
}
} // End of class
Reference
この問題について([Java]白俊1764号), 我々は、より多くの情報をここで見つけました
https://velog.io/@lifeisbeautiful/Java-백준-1764번-듣보잡-자바
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
import java.io.*;
import java.util.*;
import java.util.Map.Entry;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
HashMap<String, Integer> map = new HashMap<>();
ArrayList<String> list = new ArrayList<>();
while(N --> 0) {
String name = br.readLine();
map.put(name, map.getOrDefault(name, 0)+1);
}
while(M --> 0) {
String name = br.readLine();
map.put(name, map.getOrDefault(name, 0)+1);
}
Iterator<Entry<String, Integer>> it = map.entrySet().iterator();
int count = 0;
while(it.hasNext()) {
Entry<String, Integer> entrySet = (Entry<String, Integer>)it.next();
if(entrySet.getValue() >= 2) {
count++;
list.add(entrySet.getKey());
}
}
Collections.sort(list);
sb.append(count+"\n");
for(String name : list) {
sb.append(name+"\n");
}
System.out.println(sb);
}
} // End of class
Reference
この問題について([Java]白俊1764号), 我々は、より多くの情報をここで見つけました https://velog.io/@lifeisbeautiful/Java-백준-1764번-듣보잡-자바テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol