모각코 2회차etc./모각코2022. 7. 13. 21:55
Table of Contents
- 계획 상 2주차 내용은
인프런 HTTP 강좌 6개 강좌 수강 후 노션에 강의 내용 정리
였지만 일정 상 3주차 계획인인프런 알고리즘 강좌 5개 강좌 수강 및 문제 풀이 후 github에 push
와 맞바꿔 진행함
-
- 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));
}
}
-
- 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));
}
}
-
- 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));
}
}
-
- 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));
}
}
@gmelon :: gmelon's greenhouse
백엔드 개발을 공부하고 있습니다.