해시 7

[알고리즘] 해쉬 총 정리 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

[알고리즘] 매출액의 종류 with Java

슬라이딩 윈도우, 투포인트 알고리즘 등이 콜라보 된 멋진 작품이다. 오늘 배운 것 1. 문제 풀이 . 하나씩 올라가고, 하나씩 빼주는 방식으로 진행된다. import java.util.ArrayList; import java.util.HashMap; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner kb = new Scanner(System.in); int n = kb.nextInt(); int k = kb.nextInt(); int [] arr = new int[n]; for (int i = 0; i < arr.length; i++) { arr[i] = kb.nextInt(); } s..

알고리즘/해시 2022.03.16

[알고리즘] 아나그램 with Java, containsKey(c)

오늘 배운 것 1. containsKey(c), containsValue(c) . 키나 값이 존재하는지 여부를 확인한다. 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(String s1, String s2) { HashMap hashMap = new HashMap(); for (char c : s1.toC..

알고리즘/해시 2022.03.15

[알고리즘] 학급 회장 with Java, getOrDefault

오늘 배운 것 1. getOrDefault . 0으로 초기화해줄 수 있는 동시에 먼저 있으면 그 값을 활용할 수 있도록 돕는 아주 좋은 함수이다. 2. 문제 풀이 import java.util.HashMap; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner kb = new Scanner(System.in); int n=kb.nextInt(); String str=kb.next(); System.out.println(solution(n, str)); } public static char solution(int n, String s){ char answer=' '; HashMap map=..

알고리즘/해시 2022.03.14

[프로그래머스] 전화번호 목록

https://programmers.co.kr/learn/courses/30/lessons/42577#qna 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 전화번호 목록 문제 설명 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 so..

알고리즘/해시 2021.09.19