본문 바로가기

자료구조&알고리즘/해시를 사용한 집합과 맵4

[백준] 해시를 사용한 집합과 맵 - 2910번 빈도 정렬 (Java) 문제링크 2910번: 빈도 정렬 첫째 줄에 메시지의 길이 N과 C가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ C ≤ 1,000,000,000) 둘째 줄에 메시지 수열이 주어진다. www.acmicpc.net 풀이방법 ( 순서를 유지하면서 중복은 허용하지 않으며 값을 갖고있는 자료구조가 필요해 ! ) LinkedHashMap을 활용한다. LinkedHashMap을 정렬하는 메소드도 새로 추가한다. 소스코드 작성방법 숫자를 입력받으면서 이미 맵에 포함되어있으면, 그 값에 1을 더하여 맵의 값을 변경한다. 그렇지 않으면, 맵에 숫자를 추가한다. LinkedHashMap을 정렬하는 메소드를 선언한다. LinkedHashMap을 입력받아 map을 list로 변환한 후 Collections.sort를 활용하여.. 2022. 6. 29.
[백준] 해시를 사용한 집합과 맵 - 13414번 수강신청 (Java) 문제링크 13414번: 수강신청 입력 데이터는 표준 입력을 사용한다. 입력은 1개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 과목의 수강 가능 인원 K(1 ≤ K ≤ 100,000)와 학생들이 버튼을 클릭한 순서를 기록한 대기목 www.acmicpc.net 풀이방법 ( 순서를 유지하면서 중복은 허용하지 않는 자료구조가 필요해 !) - LinkedHashSet을 활용한다. 소스코드 작성 방법 학생을 입력받으면서 set에 이미 포함되어있으면 set에 해당 문자열을 제거한다. set에는 항상 입력받은 학생을 추가한다. set을 배열로 변환한다. 만약, 배열의 크기가 k(수강 가능 인원)보다 작으면 k를 배열의 크기로 변경한다. k만큼 출력한다. 소스코드 package baekjoon.array_map.. 2022. 6. 28.
[백준] 해시를 사용한 집합과 맵 - 7785번 회사에 있는 사람 (Java) 문제링크 7785번: 회사에 있는 사람 첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는 www.acmicpc.net 접근한 방법 해시맵 풀이방법 "enter"일 때는 hashmap에 값을 true로 넣어주고 "leave"일 때는 hashmap에 값을 false로 대체한다. hashmap을 배열로 변환하여 정렬을 수행한다. 소스코드 작성 방법 hashmap을 키는 String, 값은 Boolean으로 선언한다. StringTokenizer로 입력을 받아 "enter"일 때 key는 이름으로 값은 true로 put한다. "leave.. 2022. 6. 17.
해시맵 아..주 기본적인것만 다뤄본다.. 선언방법 HashMap hashmap = new HashMap(); 삽입 hashmap.put(key, value) 조회 hashmap.get(key) 키 포함여부 hashmap.containsKey(key) 해시맵 정렬 1. 키가 문자열일 때 키 기준으로 오름차순 정렬 key를 배열에 저장하여 정렬 Object[] key = hashMap.keySet().toArray(); Arrays.sort(key); for(Object s : key) { if(hashMap.get(s)) bw.write(s+"\n"); } 2. 키가 문자열, 값이 정수형일 때 먼저 값을 기준으로 내림차순으로 정렬하고 값이 같을 때는 키를 오름차순으로 정렬 map을 list에 저장하여 정렬 Lis.. 2022. 6. 17.
반응형