문제풀이/백준(Boj) 문제풀이
[백준] - 10815. 숫자 카드
얄루몬
2023. 11. 30. 20:37
https://www.acmicpc.net/problem/10815
10815번: 숫자 카드
첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,
www.acmicpc.net
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.StringTokenizer;
public class Main {
private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
private static StringBuilder sb = new StringBuilder();
private static StringTokenizer st;
private static List<Integer> getResult() throws IOException {
st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
List<Integer> nList = getList();
st = new StringTokenizer(br.readLine());
int m = Integer.parseInt(st.nextToken());
List<Integer> mList = getList();
Map<Integer, Boolean> checkedList = new HashMap<>();
for (Integer no : nList) {
checkedList.put(no, true);
}
return extractResult(mList, checkedList);
}
private static List<Integer> extractResult(List<Integer> nList, Map<Integer, Boolean> checkedList) {
List<Integer> result = new ArrayList<>();
for (int no : nList) {
if (!Objects.isNull(checkedList.get(no)) && Objects.requireNonNull(checkedList.get(no))) {
result.add(1);
} else {
result.add(0);
}
}
return result;
}
private static List<Integer> getList() throws IOException {
List<Integer> list = new ArrayList<Integer>();
st = new StringTokenizer(br.readLine(), " ");
while (st.hasMoreTokens()) {
int addNum = Integer.parseInt(st.nextToken());
list.add(addNum);
}
return list;
}
public static void main(String[] args) throws IOException {
List<Integer> result = getResult();
for (Integer integer : result) {
sb.append(integer).append(" ");
}
System.out.println(sb.toString().trim());
}
}
- 상근이가 입력 받은 카드 수를 기준으로 checked list를 만들어 해당 카드 번호에 index에 boolean 값을 넣어준다.
- 매칭되는지 확인 여부를 m개 만큼 출력해야 하기 때문에 checklist를 m개의 숫자를 돌아가면서 확인한다.
- 이때 checkList의 index에 있는 값이 true면 상근이가 가지고 있는 값으로 매칭되기 때문에 1을 돌려주고 그게 아니라면 0을 돌려준다.
- 마지막 출력을 위해 stringBuilder를 사용하여 작업하고 마지막에 추가된 공백을 제거해 출력 양식을 맞춰준다.