알고리즘/해시 16

[백준] 7662번 이중 우선순위 큐 #Java

TreeMap 이라는 자료구조를 처음 알게 되었다. 역쉬 많이 풀어봐야 안다! PriorityQueue 와 유사한 맵이다. firstKey, lastKey로 작고 큰걸 뺄 수 있다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; import java.util.TreeMap; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(Sy..

알고리즘/해시 2022.05.27

[프로그래머스] 신고 결과 받기 #Java

개선 전 코드(정답이긴 함) import java.io.IOException; import java.util.*; class Main { public static void main(String[] args) throws IOException { String [] id_list = {"muzi", "frodo", "apeach", "neo"}; String [] report = {"muzi frodo","apeach frodo","frodo neo","muzi neo","apeach muzi"}; int k = 2; for (int i : solution(id_list, report, k)) { System.out.printf("%d ", i); } } public static int [] solution..

알고리즘/해시 2022.05.20

[알고리즘] 해쉬 총 정리 with Java

벌써 3번째 총정리이다. 효율성 알고리즘과, 해쉬 알고리즘을 배우면서 느낀 것은 이제 조금씩 내가 모르는 부분이 나온다는 것이다. 특히 효율성 개선 알고리즘(투포인트 알고리즘, 슬라이딩 윈도 알고리즘) 등은 개념이 너무 신박하고 단순 자료구조가 아닌 문제풀이 방향 자체에 도움이 많이 되었다. 3차원 배열을 무서워하지 않음으로서 해결한 문제도 있었고, 이해하지 못했던 강의는 반복 학습하며 최대한 이해해보려고 노력했던 것 같다. 배운 것 정리 1. 투 포인트 알고리즘 . for문을 활용 + lt 변수를 활용하여 for문 한번으로 순회하며 조건을 탐색할 수 있는 기법이다. 정확히 어떤 문제에 적용되는지는 아직 파악하지 못했고, 아직은 느낌만 가지고 있다. 2. getOrDefault(c,0) . 해쉬문을 사용..

알고리즘/해시 2022.03.17

[알고리즘] K번째 큰 수 with Java, set

오늘 배운 것 1. set 자료구조 . 중복 허용하지 않는 자료구조이다. 2. sort . stream()을 이용해서 정렬할 수 있다. Set arrayList = new HashSet(); List collect = arrayList.stream().sorted().collect(Collectors.toList()); 3. 문제 풀이 . 3중 포문으로 set에 넣어준다. . 리스트로 변환하며 sorting해준 후, K번째 찾으면 끝. import java.util.*; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { Scanner kb = new Scanner(System.in)..

알고리즘/해시 2022.03.16

[알고리즘] 모든 아나그램 찾기 with Java

O(N)으로 풀려했지만 도저히 풀 수 없어서 O(N^2)로 풀어본 문제. 정답은 맞았는데 과연,, 해설도 동일할까? 궁금 오늘 배운 것 1. equals . hashmap도 equals가 적용된다. 2. 문제 풀이 . 하나씩 올라가고, 하나씩 빼주는 방식으로 진행된다. import java.util.HashMap; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner kb = new Scanner(System.in); String s1 = kb.next(); String s2 = kb.next(); solution(s1, s2); } private static void solution(St..

알고리즘/해시 2022.03.16