목록기타/코딩테스트 (38)
개발놀이터
주요 개념은 HashMap으로 HashMap에 관련된 내용은 해당 포스팅 참조 https://coding-review.tistory.com/277 Map 자료구조 오늘은 알고리즘 문제에서도 많이 사용하고 실전에서도 많이 사용한다고 알려져있는 Map에 대해서 알아보도록 하겠습니다. Map 맵은 사전과 비슷합니다. people이란 단어에 "사람", baseball이란 단어 coding-review.tistory.com 전체적인 문제들은 HashMap을 적절히 사용하면 되는 문제였다. 마지막 문제는 Set을 사용하는 문제도 나오지만 Set은 추후 다룰예정 간단하게 설명하자면 Set은 중복을 허용하지 않는 (중복을 제거하는) 자료구조로 많이 사용한다. 그 중 TreeSet은 정렬이 포함된 자료구조 개인적으로 생..
package HashMap그리고TreeSet4장.K번째로큰수4다시5.my; import java.util.*; import java.util.stream.Collectors; public class Main { /** * Set 자료구조를 사용하면 간단하게 풀리는 문제 * Set 은 중복을 허용하지 않는다. 거기다 오름차순 내림차순으로 정렬하고싶다면 TreeSet 을 사용하면 된다. * TreeSet 은 선언하고 입력받는 것들을 정렬해준다. * 비슷한 것으로 TreeMap 이 있다. * * 자세한 내용은 선생님의 풀이 참고고 */ public static void main(String[] args) { Scanner kb = new Scanner(System.in); int n = kb.nextInt(..
package HashMap그리고TreeSet4장.모든아나그램찾기4다시4.my; import java.util.HashMap; import java.util.Scanner; public class Main { /** * 피드백 할 것 없음 이전 문제와 완벽히 동일 */ public static void main(String[] args) { Scanner kb = new Scanner(System.in); String input1 = kb.next(); String input2 = kb.next(); System.out.println(solution(input1, input2)); } private static int solution(String input1, String input2) { int ans..
package HashMap그리고TreeSet4장.매출액의종류4다시3.my; import java.util.ArrayList; import java.util.HashMap; import java.util.Scanner; public class Main { /** * sliding window 와 HashMap 을 섞어서 사용했다. * 피드백 X */ public static void main(String[] args) { Scanner kb = new Scanner(System.in); int date = kb.nextInt(); int length = kb.nextInt(); int[] arr = new int[date]; for (int i = 0; i < date; i++) { arr[i] = kb..
package HashMap그리고TreeSet4장.아나그램4다시2.my; import java.util.HashMap; import java.util.Scanner; public class Main { /** * 피드백 X */ public static void main(String[] args) { Scanner kb = new Scanner(System.in); String input1 = kb.next(); String input2 = kb.next(); System.out.println(solution(input1, input2)); } private static String solution(String input1, String input2) { String answer = "NO"; HashM..
package HashMap그리고TreeSet4장.학급회장4다시1.my; import java.util.ArrayList; import java.util.HashMap; import java.util.Scanner; public class Main { /** * -내 풀이- * 진짜 겁나 더럽게 풀었다... * HashMap 에 각각 A, B, C, D, E 를 배열처럼 넣고 * 입력받은 문자열을 ArrayList 에 담아 해당 list 를 streamAPI 로 돌려서 equals 로 거르고 count 로 계산 * * -선생님 풀이- * 정말 간단하게 풀었는데 핵심은 HashMap 클래스의 getOrDefault 를 통해 카운팅을 했다. * HashMap map = new HashMap(); * Stri..
3장의 주요 개념은 역시 Two Pointers Algorithm (이하 투 포인터 알고리즘) 이다. 대부분의 문제는 투 포인터 알고리즘을 적용하면 간단하게 풀 수 있는 문제이다. 그 중에서 투 포인터 알고리즘의 변형 문제인 Sliding Window (이하 슬라이딩 윈도우) 를 익히면 완벽할 것 같다. 하지만 3-6. 최대 길이 연속 부분수열 문제를 다시 한번 확인할 필요가 있다. https://coding-review.tistory.com/275 3-6. 최대 길이 연속 부분수열 package 배열응용3장.최대길이연속부분수열3다시6.my; import java.util.Scanner; public class Main { /** * -내 풀이- * 0을 1로 바꾸는 작업을 하는 것에 초점이 맞아서 풀지..
package 배열응용3장.최대길이연속부분수열3다시6.my; import java.util.Scanner; public class Main { /** * -내 풀이- * 0을 1로 바꾸는 작업을 하는 것에 초점이 맞아서 풀지 못했다. * * -피드백- * 0과 1로 바꾸는 작업 없이 start 와 end 와의 거리를 구하면 되는 것이다. * 또한 cnt 라는 개념을 추가하여 arr[end] == 0 이면 cnt++ * 그리고 while (cnt > k) 로 cnt > k 인 상황에서 start 를 조정 (여기서 k 는 0을 1로 바꿀 수 있는 최대 횟수) * arr[start] == 1 이면 단순 start++ arr[start] == 0 이면 cnt-- 하면서 start++ */ public stati..
package 배열응용3장.연속된자연수의합3다시5.my; import java.util.Scanner; public class Main { /** * 이전 문제와 완벽히 동일 피드백 X */ public static void main(String[] args) { Scanner kb = new Scanner(System.in); int input = kb.nextInt(); int[] arr = new int[input]; for (int i = 0; i < input; i++) { arr[i] = i + 1; } System.out.println(solution(arr, input)); } private static int solution(int[] arr, int input) { int answer ..
package 배열응용3장.연속부분수열3다시4.my; import java.util.Scanner; public class Main { /** * -내 풀이- * two pointers algorithm 을 이용해 풀었는데 내 코드가 더 깔끔한 것 같다. 선생님의 코드는 너무 복잡함 * 피드백할 것은 없다. */ public static void main(String[] args) { Scanner kb = new Scanner(System.in); int n = kb.nextInt(); int m = kb.nextInt(); int[] arr = new int[n]; for (int i = 0; i < n; i++) { arr[i] = kb.nextInt(); } System.out.println(so..