hahn

단계별로 풀어보기(이분 탐색 - 숫자 카드 2) 본문

코딩테스트 연습/백준(JAVA)

단계별로 풀어보기(이분 탐색 - 숫자 카드 2)

hahn 2021. 9. 18. 10:44
728x90
반응형

10816번: 숫자 카드 2 (acmicpc.net)

 

10816번: 숫자 카드 2

첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,

www.acmicpc.net

http://boj.kr/3c3fde1508ce4f4f9e1963d8634f4abf

 

공유 소스 보기

 

www.acmicpc.net

더보기
더보기
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;

class Main{
    
    public static void main(String[] args) throws IOException{
        
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		Map<String, Integer> cardMap = new HashMap<String, Integer>();
		
		int cardCount = Integer.parseInt(br.readLine());
		
		StringTokenizer st = new StringTokenizer(br.readLine(), " ");
		
		String card;
		
		for(int i = 0; i < cardCount; i++) {
			
			card = st.nextToken();
			
			if(cardMap.get(card) == null) cardMap.put(card, 0);
			cardMap.put(card, cardMap.get(card) + 1);
			
		}
		
		cardCount = Integer.parseInt(br.readLine());
		
		st = new StringTokenizer(br.readLine(), " ");
		
		for(int i = 0; i < cardCount; i++) {
			
			card = st.nextToken();
			
			if(cardMap.get(card) == null) {
				bw.write("0 ");
			}else {
				
				bw.write(cardMap.get(card) + " ");
				
			}
			
		}
		
		bw.close();
        
    }
    
}

 

HashMap 이용해서 풀었다

 

이분 탐색, 정렬 이용해서 풀어봐야 하는데

 

참 큰일이다..

728x90
반응형