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를 사용하여 작업하고 마지막에 추가된 공백을 제거해 출력 양식을 맞춰준다.
'문제풀이 > 백준(Boj) 문제풀이' 카테고리의 다른 글
[백준] - 1743번 음식물 피하기 (1) | 2023.12.17 |
---|---|
[백준] -1343 (그리디, 구현) (0) | 2023.12.12 |
쇠막대기 (0) | 2023.11.30 |
[백준] - 14675. 단절점과 단절선 성공 (0) | 2023.09.05 |
[백준] - 11725.트리의 부모찾기 (0) | 2023.09.04 |