본문 바로가기

해시셋20

[백준] 1764번 - 듣보잡 [Java] https://www.acmicpc.net/problem/1764 1.  아이디어 Set 과 우선순위 큐의 조합으로 해결할 수 있다.2. 문제풀이 듣도 못한 사람을 Set에 넣은 후 보도 못한 사람이 Set에 존재하는 이름이면 우선순위 큐에 넣는 방식으로 구현했다.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 BufferedWrit.. 2025. 1. 6.
[백준] 3052번 - 나머지 [Java] https://www.acmicpc.net/problem/3052 1.  아이디어 Set 자료구조와 모듈러 연산을 활용하면 간단하게 해결할 수 있다.2. 문제풀이 아이디어 그대로 구현만 했다.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)); Set set = new HashSet(); for (int i = 0; i 4. 후기 2025. 1. 2.
[백준] 11478번 - 서로 다른 부분 문자열의 개수 [Java] https://www.acmicpc.net/problem/11478 1.  아이디어 Set 자료구조와 String의 substring 메서드를 활용하면 간단하게 해결할 수 있다.2. 문제풀이 2중 for문에서 substring 메서드의 시작 인덱스와 끝 인덱스를 바꿔가며 HashSet에 넣어주는 방식으로 구현했다.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)); String i.. 2025. 1. 2.
[백준] 27440번 - 1로 만들기 3 [Java] https://www.acmicpc.net/problem/27440 1.  아이디어 이전 1로 만들기 문제에서 수의 범위가 커진 문제로 BFS와 Set을 활용한 방문체크로 해결할 수 있다.([코딩테스트 준비/백준] - [백준] 1463번 - 1로 만들기 [Java])2. 문제풀이 수의 범위가 int형을 넘어가므로 배열로 방문 체크를 진행할 수 없어 Set을 활용해서 방문 체크를 진행했다.다이나믹 프로그래밍 풀이도 시도했는데 최적화하려는 노력에도 시간초과가 발생했다.3. 코드 import java.io.*;import java.util.*;public class Main { private static class Node implements Comparable { long num; .. 2024. 12. 29.
[백준] 19583번 - 싸이버개강총회 [Java] https://www.acmicpc.net/problem/19583 1.  아이디어 String의 compareTo 메서드와 Set 자료구조를 통해 출석이 확인된 학회원의 수를 구할 수 있다.2. 문제풀이 HH:MM 형식의 문자열은 String의 compareTo 메서드로 비교를 하면 시간순(사전순)으로 비교할 수 있다. 이를 활용해서 채팅이 출석 기준이 되는 시간에 기록된 채팅인지 파악했다. 개강총회 시작 전에 채팅 기록을 남긴 학회원을 entry에 담고, 개강총회를 끝내고 나서 스트리밍을 끝낼 때까지 채팅 기록을 남긴 학회원을 exit에 담은 후 retainAll 메서드로 교집합을 구해서 크기를 출력하는 방식으로 구현했다.3. 코드 import java.io.*;import java.util.*;pu.. 2024. 12. 24.
[백준] 7785번 - 회사에 있는 사람 [Java] https://www.acmicpc.net/problem/7785 1.  아이디어 회사에 있는지 여부는 True/False 두 가지만 있다는 점에서 Set 자료구조를 활용해서 구현했다.2. 문제풀이 회사에 있는 사람이면 Set에서 제거하고 회사에 없는 사람이면 Set에 추가하는 방식으로 구현했다. 출근을 해야 퇴근을 할 수 있고, 출근을 안했어야 출근을 할 수 있으므로 enter와 leave는 사용하지 않아도 구현할 수 있다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new Bu.. 2024. 12. 23.
[백준] 13414번 - 수강신청 [Java] https://www.acmicpc.net/problem/13414 1.  아이디어 LinkedHashSet 자료구조를 활용하면 간단하게 해결할 수 있다.2. 문제풀이 수강신청 과정은 순서가 있고 성공, 실패 두 가지로 나뉜다는 점에서 이 두 가지를 한번에 다룰 수 있는 LinkedHashSet 자료구조를 이용했다. 버튼을 누른 순서로 대기목록에 들어가고 버튼을 한번 더 누르면 대기목록의 맨 뒤로 밀려나는건 LinkedHashSet에 존재하지 않는 학번이면 넣고 존재하는 학번이면 LinkedHashSet의 학번을 제거하고 새로 넣는 방식으로 구현할 수 있다. 일반 HashSet은 순회 과정에서 넣은 순서로 나오지 않아서 사용하지 않았고, 학번은 앞자리가 0인 경우가 있어서 String 타입으로 받아서 처.. 2024. 12. 23.
[백준] 1181번 - 단어 정렬 [Java] https://www.acmicpc.net/problem/1181 1.  아이디어 중복된 단어를 제거한 후 정렬하는데 Set 자료구조를 먼저 사용하고 이를 다시 List 자료구조로 변환하면 된다.2. 문제풀이 자바의 List는 생성자에 Collection을 받을 수 있어서 Set을 활용해 먼저 중복을 제거한 후 이를 List로 변환했다.두 가지 정렬 조건은 List의 sort 메서드에서 Comparator에 람다식을 넣는 방식으로 구현했다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br.. 2024. 12. 23.