백준 10815 숫자 카드 - 자바

손찬호·2024년 5월 27일
0

알고리즘

목록 보기
50/91

https://www.acmicpc.net/problem/10815

풀이 아이디어

입력은 BufferedReader, 출력은 BufferedWriter을 사용한다.
자바의 HashMap을 사용해서 카드 번호를 key, 1을 value로 해시맵에 저장했다.
저장한 다음 key에 매핑된 value가 있는지 확인한다.
있으면 "1 "을 출력하도록 하고
없으면 NullPointerException이 발생할 것이므로 try,catch로 감싸 "0 "을 출력하도록 한다.
마지막에 BufferedWriter에 작성된 내용을 flush()함수로 출력한다.

배운 것

해시맵 사용법에 대해서 배울 수 있었다.
문제풀이 과정에서 사용한 핵심 메서드는 다음과 같다.

// key: Integer, value: Integer로 선언
HashMap<Integer, Integer> card = new HashMap<>();

// 해시맵에 (key,value)=(st.nextToken(), 1)을 추가
card.put(Integer.parseInt(st.nextToken()), 1);

// 해시맵에 key에 매핑되는 value를 반환 
card.get(Integer.parseInt(st.nextToken()))

풀이 코드

import java.util.*;
import java.io.*;

public class _10815 {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int n = Integer.parseInt(br.readLine());
        HashMap<Integer, Integer> card = new HashMap<>();
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        for(int i=0;i<n;i++){
            card.put(Integer.parseInt(st.nextToken()), 1);
        }

        int m = Integer.parseInt(br.readLine());
        st = new StringTokenizer(br.readLine(), " ");
        for(int i=0;i<m;i++){
            try{
                if(1==card.get(Integer.parseInt(st.nextToken()))){
                    bw.write("1 ");
                }
            }
            catch(NullPointerException e){
                bw.write("0 ");
            }
        }
        bw.flush();
        bw.close();
        br.close();
    }
}
profile
매일 1%씩 성장하려는 주니어 개발자입니다.

0개의 댓글