728x90
반응형
1. 숫자 카드2(백준 10816번)
▷ 풀이 코드
import java.util.HashMap; import java.util.Scanner; public class NumberCard2 { public static void main(String args[]) { Scanner sc = new Scanner(System.in); HashMap<Integer,Integer> map = new HashMap<>();//new에서 타입 파라미터 생략가능 int N = sc.nextInt(); for(int i=0; i<N; i++) { int key = sc.nextInt(); map.put(key, map.getOrDefault(key, 0) + 1); } int M = sc.nextInt(); StringBuilder sb = new StringBuilder(); for(int i=0; i<M; i++) { int key = sc.nextInt(); sb.append(map.getOrDefault(key, 0)).append(' '); } System.out.println(sb); } }
2. 듣보잡(백준 1764번)
▷ 풀이 코드
import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Scanner; public class NumberCard2 { public static void main(String args[]) { Scanner sc = new Scanner(System.in); HashMap<String,Integer> map = new HashMap<>();//new에서 타입 파라미터 생략가능 HashMap<String,Integer> map1 = new HashMap<>();//new에서 타입 파라미터 생략가능 int N = sc.nextInt(); int M = sc.nextInt(); for(int i=0; i<N+M; i++) { String key = sc.next(); map.put(key, map.getOrDefault(key, 0) + 1); } StringBuilder sb = new StringBuilder(); int cnt = 0; List<String> result = new ArrayList<>(); for(String key : map.keySet()) { if(map.get(key) > 1) { cnt++; result.add(key); } } System.out.println(cnt); Collections.sort(result); for(String key : result) { System.out.println(key); } } }
이번에는 알고리즘 스터디를 통해 배운 해시법을 통해 백준 문제 풀이를 해보았습니다!!
해시는 리스트와 비슷하지만 key와 value를 입력해야한다는 점에서 차이점이 있고
key와 value가 같으면 중복된 값이 적용이 안됩니다!
그래서 getOrDefault, keySet 등의 함수를 사용하면서 값들을 증가시켜줍니다!
해시의 내장함수들을 잘 사용하면 코드가 훨씬 쉽고 간결해지네요!
다른 문제들도 풀어볼게요~
많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~
728x90
반응형
'문제풀기 > 백준 문제풀이' 카테고리의 다른 글
[알고리즘] 우선순위 큐 문제 풀이(백준 1927번, 11279번) (0) | 2023.08.03 |
---|---|
[알고리즘] 스택 문제 풀이(백준 9012번, 10773번, 10828번) (0) | 2023.08.03 |
[알고리즘] 브루트-포스법 문제 풀이(백준 2798번, 2231번) (4) | 2023.06.21 |
[백준 문제 1157번] 단어 공부 문제 (0) | 2023.01.21 |
[백준 문제 1712번] 손익분기점 문제 (0) | 2023.01.15 |