https://www.acmicpc.net/problem/10816
10816번: 숫자 카드 2
첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,
www.acmicpc.net
HashMap의 key-value 쌍을 이용해 해결할 수 있었다. 나는 풀고나서는 항상 알고리즘 분류를 확인하는 편인데 정렬이나 이분 탐색을 이용해서 풀 수도 있었던 것 같지만 해시가 제일 직관적인 방법인 것 같다.
문제 및 입출력
코드
import java.util.HashMap;
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
// 상근이의 카드 n개에 대한 설정
int n = sc.nextInt();
// HashMap 사용(key : 카드의 값, value : 해당 값을 가진 카드의 개수)
for(int i=0; i<n; i++)
{
int num = sc.nextInt();
if(map.containsKey(num))
{
map.put(num, map.get(num)+1);
}
else
{
map.put(num, 1);
}
}
// m개의 입력값과 비교 HashMap의 key를 비교
int m = sc.nextInt();
for(int i=0; i<m; i++)
{
int chk = sc.nextInt();
if(map.containsKey(chk)) // HashMap에 있는 key면 해당 value를 출력
{
sb.append(map.get(chk) + " ");
}
else // 없는 key면 0을 출력
{
sb.append(0 + " ");
}
}
System.out.println(sb.toString());
sc.close();
}
}
'[ 다먹살 ] > - Coding' 카테고리의 다른 글
[백준] 11866 요세푸스 문제0 (0) | 2021.11.08 |
---|---|
[백준] 11050 이항계수1 (0) | 2021.11.07 |
[백준] 2920 음계 (0) | 2021.11.04 |
[백준] 1032 명령 프롬포트 (0) | 2021.11.04 |
[프로그래머스] 레벨4 우유와 요거트가 담긴 장바구니 (7) | 2021.11.04 |
댓글