etc./모각코

모각코 2회차

gmelon 2022. 7. 13. 21:55
  • 계획 상 2주차 내용은 인프런 HTTP 강좌 6개 강좌 수강 후 노션에 강의 내용 정리 였지만 일정 상 3주차 계획인 인프런 알고리즘 강좌 5개 강좌 수강 및 문제 풀이 후 github에 push 와 맞바꿔 진행함

    1. Hash - 학급 회장
package inflearn.hash;


import java.util.HashMap;  
import java.util.Map;  
import java.util.Scanner;

public class P04\_01 {

public static char solution(int n, String str) {

    Map<Character, Integer> map = new HashMap<>();
    for (char c : str.toCharArray()) {
        map.put(c, map.getOrDefault(c, 0) + 1);
    }
    int curMax = 0;
    char curMaxKey = 0;
    for (Character c : map.keySet()) {
        if (map.get(c) > curMax) {
            curMax = map.get(c);
            curMaxKey = c;
        }
    }
    return curMaxKey;
}

public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    int n = Integer.parseInt(sc.nextLine());
    String str = sc.nextLine();
    System.out.println(solution(n, str));
}

}
    1. Hash - 아나그램
package inflearn.hash;

import java.util.HashMap;  
import java.util.Map;  
import java.util.Scanner;

public class P04\_02 {

public static String solution(String str1, String str2) {

    Map<Character, Integer> map = new HashMap<>();

    for (char c : str1.toCharArray()) {
        map.put(c, map.getOrDefault(c, 0) + 1);
    }

    for (char c : str2.toCharArray()) {
        if (!map.containsKey(c) || map.get(c) == 0) return "NO";
        map.put(c, map.get(c) - 1);
    }
    return "YES";
}

public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    String str1 = sc.nextLine();
    String str2 = sc.nextLine();
    System.out.println(solution(str1, str2));
}
}
    1. Hash - 매출액의 종류
package inflearn.hash;

import java.util.\*;

public class P04\_03 {

public static String solution(int n, int k, int[] arr) {

    Map<Integer, Integer> map = new HashMap<>();
    List<Integer> answer = new ArrayList<>();

    // init
    for (int i = 0; i < k; i++) map.put(arr[i], map.getOrDefault(arr[i], 0) + 1);
    answer.add(map.size());

    // sliding window
    for (int i = k; i < n; i++) {   // i가 뒤에서 끌고 가는 방식
        // lf 처리
        if (map.get(arr[i-k]) >= 2) map.put(arr[i - k], map.get(arr[i - k]) - 1);
        else map.remove(arr[i - k]);
        // rf 처리
        map.put(arr[i], map.getOrDefault(arr[i], 0) + 1);
        answer.add(map.size());
    }
    return answer.toString().replaceAll("[^0-9 ]", "");
}

public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    int k = sc.nextInt();
    sc.nextLine(); // bf clear
    int[] arr = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
    System.out.println(solution(n, k, arr));
}

}
    1. Hash - 모든 아나그램 찾기
package inflearn.hash;

import java.util.HashMap;  
import java.util.Map;  
import java.util.Scanner;

public class P04\_04 {

public static int solution(String s, String t) {

    Map<Character, Integer> mapS = new HashMap<>();
    Map<Character, Integer> mapT = new HashMap<>();
    int answer = 0;

    char[] arrS = s.toCharArray();
    char[] arrT = t.toCharArray();

    // init mapT
    for (int i = 0; i < arrT.length; i++) mapT.put(arrT[i], mapT.getOrDefault(arrT[i], 0) + 1);

    // init mapS
    for (int i = 0; i < arrT.length - 1; i++) mapS.put(arrS[i], mapS.getOrDefault(arrS[i], 0) + 1);

    int lt = 0;
    for (int rt = arrT.length - 1; rt < arrS.length; rt++) {
        // rt 갱신
        mapS.put(arrS[rt], mapS.getOrDefault(arrS[rt], 0) + 1);
        // rt 갱신 후 answer 계산
        if (mapS.equals(mapT)) answer++;
        // lf 갱신
        mapS.put(arrS[lt], mapS.get(arrS[lt]) - 1);
        if (mapS.get(arrS[lt]) == 0) mapS.remove(arrS[lt]);
        lt++;
    }
    return answer;
}

public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    String s = sc.nextLine();
    String t = sc.nextLine();

    System.out.println(solution(s, t));
}
}

'etc. > 모각코' 카테고리의 다른 글

모각코 5주차  (0) 2022.08.03
모각코4회차  (0) 2022.07.29
모각코 3회차  (0) 2022.07.20
모각코 1회차  (0) 2022.07.06
2022 하계 모각코 사전 계획  (0) 2022.06.23