본문 바로가기

해시맵10

[백준] 25206번 - 너의 평점은 [Java] https://www.acmicpc.net/problem/25206 1.  아이디어 HashMap을 활용해서 등급에 따른 평점을 간단하게 구할 수 있다.2. 문제풀이 HashMap에 key에 등급, value에 과목평점을 저장한 후 반복문을 돌며 과목 총점과 과목 수를 구한 후 나누는 방식으로 구현했다.과목 등급이 P인 경우만 주의해서 구현하면 된다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.i.. 2025. 1. 8.
[백준] 18870번 - 좌표 압축 [Java] https://www.acmicpc.net/problem/18870 1.  아이디어 수직선 위에 주어진 좌표가 전체 좌표 중 중복을 제외하고 몇 번째로 큰 좌표인지 구하는 문제로 좌표에 대한 정렬을 수행 후 Map을 활용하는 방식과 이분 탐색을 활용하는 방식 두가지로 구현할 수 있었다.2. 문제풀이 1. HashMap주어진 좌표를 List로 받은 후 TreeSet에 복사해서 중복 제거 + 정렬을 수행했다. 이후 TreeSet을 순회하며 HashMap에 좌표와 순서를 저장해주었고 List를 순회하며 HashMap에서 순서를 조회하는 방식으로 구현했다. 2. 이분 탐색주어진 좌표를 배열로 받은 후 HashSet에 넣어 중복 제거를 수행했다. 이후 HashSet과 같은 크기의 배열에 넣고 정렬을 수행한 후 .. 2025. 1. 7.
[백준] 16165번 - 걸그룹 마스터 준석이 [Java] https://www.acmicpc.net/problem/16165 1.  아이디어 HashMap과 TreeSet을 활용해서 조건에 맞게 자료 구조를 처리했다.2. 문제풀이 두 개의 HashMap을 활용했는데 하나는 key에 걸그룹 이름, value에 걸그룹 멤버를 저장했고, 하나는 key에 걸그룹 멤버, value에 걸그룹 이름을 저장했다. 첫번째 HashMap은 퀴즈가 0번일 경우 사용했고 걸그룹 멤버를 사전순으로 출력하기 좋게 TreeSet으로 처리했다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { Buffere.. 2025. 1. 4.
[백준] 17219번 - 비밀번호 찾기 [Java] https://www.acmicpc.net/problem/17219 1.  아이디어 HashMap을 활용하면 간단하게 구현할 수 있다.2. 문제풀이 key에 사이트 이름, value에 비밀번호를 입력하는 HashMap을 이용하면 간단하게 해결할 수 있다.입력 값이 띄어쓰기로 파싱할 수 있어서 StringTokenizer까지 활용해서 구현했다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); .. 2025. 1. 4.
[백준] 1620번 - 나는야 포켓몬 마스터 이다솜 [Java] https://www.acmicpc.net/problem/1620 1.  아이디어 HashMap을 활용하면 간단하게 구현할 수 있다.2. 문제풀이 key와 value 모두 String인 HashMap을 이용했고 , 이렇게 두가지 모두 넣어줬다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new Outpu.. 2025. 1. 4.
[백준] 2910번 - 빈도 정렬 [Java] https://www.acmicpc.net/problem/2910 1.  아이디어 LinkedHashMap을 활용해서 빈도 정렬을 수행했다.2. 문제풀이 정수와 그 개수를 저장하는 LinkedHashMap을 활용해서 입력을 받았다.이후 Entry를 List로 옮겨서 정렬을 수행했는데 이때 value를 기준으로 정렬하면 빈도를 기준으로 정렬하면서 먼저 나온 것 순서로 정렬할 수 있다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStr.. 2025. 1. 4.
[백준] 9375번 - 패션왕 신해빈 [Java] https://www.acmicpc.net/problem/9375 1.  아이디어 Map 자료구조를 활용해서 의상의 종류별 개수를 저장해서 해결했다.2. 문제풀이 Map은 key에 의상의 종류, value에 개수를 저장했다.같은 이름을 가진 의상은 존재하지 않으므로 종류별 개수가 잘 저장되고 입력을 받은 후 의상을 입을 수 있는 경우의 수만 구하면 된다.총 경우의 수는 각 종류별로 하나를 고르거나 안 고르거나 2가지 경우가 있으므로 종류별로 개수 + 1가지가 있고 종류별로 독립 시행이므로 곱셈을 해주면 된다. 다만 알몸인 경우는 제외해야하므로 최종 결과에서 1가지를 빼주면 된다.3. 코드 import java.io.*;import java.util.*;public class Main { publ.. 2025. 1. 2.
[백준] 20166번 - 문자열 지옥에 빠진 호석 [Java] https://www.acmicpc.net/problem/20166 1.  아이디어 격자의 크기와 신이 좋아하는 문자열의 길이가 작다는 점에서 깊이 우선 탐색을 이용할 수 있을 것 같았고 신이 좋아하는 문자열을 비교하는 횟수가 많고 중복될 수 있다는 점에서 미리 가능한 조합을 다 구하고 비교를 O(1)로 해결하도록 구현했다.2. 문제풀이 신이 좋아하는 문자열의 길이가 1 ~ 5 이므로 길이가 1인 문자열부터 길이가 5인 문자열까지 격자의 각 점에서 전부 dfs를 돌렸다.dfs과정에서 파라미터로 완성될 문자열을 StringBuilder로 들고 다니며 depth를 내려갈 때마다 뒤에 방문한 격자의 문자를 더하고 depth를 올라가면 다시 지우는 방식으로 가능한 모든 문자열 조합을 구해서 이를 HashMap에.. 2024. 12. 23.
[백준] 1351번 - 무한 수열 [Java] https://www.acmicpc.net/problem/1351 1.  아이디어 Top-Down 방식의 다이나믹 프로그래밍과 HashMap을 통한 메모이제이션으로 해결할 수 있다.2. 문제풀이 수열의 특정 원소를 구하기 위해서 수열의 다른 두 원소의 합을 구해야 한다. 다른 두 원소도 역시 또 다른 두 원소의 합으로 이루어져 있고 해당 과정이 재귀적이므로 깊이 우선 탐색을 통해 구할 수 있다. 다만 이 과정에서 계산의 중복을 줄이기 위해 메모이제이션이 필요하고 수열의 길이가 int형 범위를 넘어갈 수 있어서 배열 대신 HashMap을 이용해서 메모이제이션을 했다.3. 코드 import java.io.*;import java.util.*;public class Main { private static.. 2024. 12. 23.
[백준] 11652번 - 카드 [Java] https://www.acmicpc.net/problem/11652 1.  아이디어 Map 자료구조를 활용하면 정수와 그 개수를 간단하게 처리할 수 있다.2. 문제풀이 Map 자료구조에서 key에 정수, value에 정수의 개수를 저장한 후 향상된 for으로 Map을 순회하며 가장 많이 가지고 있는 정수를 구하는 방식으로 구현했다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); .. 2024. 12. 23.