목록슬라이딩윈도우 (5)
개발자는 기록이 답이다

4. 모든 아나그램 찾기(Hash, sliding window : 시간복잡도 O(n)) 예시 입력 1 10 3 13 15 34 23 45 65 33 11 26 42 예시 출력 1 143 내가 푼 첫번째 틀린 풀이 맨 처음에는 map에서 equals함수가 된다는걸 모르고 엄청난 뻘짓을 했다,, map.get(key)로 나온 value값이 서로 일치하는지로 해봤더니, 이전에 A부분에서 지나간건 체크를 못하더라. import java.util.HashMap; import java.util.Scanner; public class Main { public int solution(String str, String t) { int answer = 0; HashMap target = new HashMap(); for ..

https://cote.inflearn.com/contest/10/problem/03-06 OnlineJudge cote.inflearn.com (위의 링크는 인프런 로그인 후, 해당 강의를 사지 않으면 접속이 되지 않습니다) 6. 최대 길이 연속부분수열 예시 입력 1 14 2 1 1 0 0 1 1 0 1 1 0 1 1 0 1 예시 출력 1 8 내가 푼 풀이(Time: 734ms Memory: 35MB) 0을 만났을때 1로 바꿔주는데, lt가 따라오면서 0이었던건지 파악하기 위해 arr배열을 복사해서 ints[]배열을 만들었다. 그런데 강의 풀이를 보니까, 따로 배열 복사를 하지 않고 1로 바꿔주지 않아도 그냥 카운팅만 해서 단순하게 풀 수 있는 문제였다. import java.util.Arrays; i..

5. 연속된 자연수의 합 예시 입력 1 15 예시 출력 1 3 내가 푼 풀이(Time: 156ms Memory: 27MB) 강의 풀이에선 배열을 만들어서 자연수들을 담았는데, 그게 더 속도가 조금 빠르다. 계속 정수를 찾는것보다 데이터를 배열로 담는게 찾기가 더 빨라서 그런걸까? import java.util.Scanner; public class Main { public int solution(int n) { int answer = 0, lt = 1, sum = lt; for (int rt = 2; rt = n) { sum -= lt; lt++; if (sum == n) answer++; } } ..

4. 연속부분수열(복합문제) 예시 입력 1 8 6 1 2 1 3 1 1 1 2 예시 출력 1 3 2중 포문으로 풀면 시간복잡도가 O(N²)인데, 입력값이 십만이 넘기 때문에, i부터 쫘악 도는게 비효율적이다. 입력 제한을 보는 순간 O(N²)은 안되겠구나라고 판단해야한다. O(N²)을 O(N)으로 풀어내는 능력을 키워야 합니다. 내가 푼 틀린 풀이(Time: 1947ms Memory: 34MB- Time Limit Exceeded) 2중 포문만 안쓰면 되는 줄 알았는데, 결국에는 다시 2번째 if분기처리에서 for문을 재 순회하게 되므로 시간 초과가 나왔다. import java.util.Scanner; public class Main { public int solution(int n, int m, in..