sm 기술 블로그
90. 10815(숫자카드) 본문
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
class Main{
public static void main(String args[])throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
String[] haveCard = br.readLine().split(" ");
int M = Integer.parseInt(br.readLine());
String[] compareCard = br.readLine().split(" ");
HashMap<String, Integer> cardNum = new HashMap<>();
for(int i = 0 ; i< haveCard.length; i++) {
cardNum.put(haveCard[i], 1);
}
for(String val: compareCard) {
if(cardNum.get(val)!=null) {
sb.append("1").append(" ");
continue;
}
sb.append("0").append(" ");
}
System.out.println(sb);
}
}
문제요약
상근이가 가지고 있는 카드의 숫자와 제시된 카드의 숫자가 같은지 비교하시오.
설명
N(상근이가 가진 숫자카드)과 M(비교할 숫자카드)은 받긴하지만 사용하지 않는다.(변수 선언 안해도 된다.)
이 코드에 핵심은 map이다.
HashMap은 key와 value로 이루어졌으며 자바스크립트에서는 객체, 파이썬에서는 데이터사전이라고 한다.
for(int i = 0 ; i< haveCard.length; i++) {
cardNum.put(haveCard[i], 1);
}
가지고 있는 카드는 key는 카드의숫자 value는 1로 저장해주었다.
for(String val: compareCard) {
if(cardNum.get(val)!=null) {
sb.append("1").append(" ");
continue;
}
sb.append("0").append(" ");
}
for each문을 사용하여 비교하는 카드의 숫자와 map을 비교한다.
key가 없는 값이면 map은 null을 반환하기 때문에 null이 나온다면 상근이가 가지고 있는 카드숫자가 아니라는 것이다.
따라서 null이 아니라면 가지고 있는 카드이므로 1을 StringBulider에 저장하고 없다면 0을 저장하여 출력한다.
'문제 > 백준_자바' 카테고리의 다른 글
93. 10816(숫자 카드2) (0) | 2022.06.20 |
---|---|
92. 1620(나는야 포켓몬 마스터 이다솜) (0) | 2022.06.19 |
91. 14425 (문자열 집합) (0) | 2022.06.19 |
[단계별] 백준 (답) java (88~) (0) | 2022.05.06 |
[단계별] 백준 (답) java (1~87) (0) | 2022.04.18 |
Comments