ffinn92 / Keep-at-solve-it

꾸준히 알고리즘 풀기 위한 스터디 저장소입니다.
2 stars 3 forks source link

[220707][검봉][인프런](3-6) 최대 길이 연속부분수열 #85

Closed crispindeity closed 2 years ago

crispindeity commented 2 years ago

📌 문제

⭐️ 아이디어

🤔 고민한 내용

💪 새롭게 배운 내용

🆘 이해가 어려운 내용

❌ 해결하지 못한 이유

✅ 본인 풀이

🏋️‍♀️ 시도횟수 : 2회 | ⏱ 걸린시간 : 285ms | 💾 메모리 : 31MB

public class MaximumLengthContinuousSubsequence {

    static class Main {
        public int solution(int K, int[] numbers) {
            int answer = 0;
            int pointA = 0;
            int pointB = 1;
            int tmp = K;
            int max = 0;
            while (pointA < numbers.length && pointB < numbers.length) {
                if (numbers[pointA] == 0) {
                    numbers[pointA] = -1;
                    tmp--;
                    max++;
                } else if (numbers[pointA] == 1) {
                    max++;
                    numbers[pointA] = -1;
                }
                if (numbers[pointB] == 1) {
                    max++;
                } else if (tmp != 0) {
                    max++;
                    tmp--;
                } else {
                    pointA++;
                    answer = Math.max(answer, max);
                    max = 0;
                    tmp = K;
                    pointB = pointA + 1;
                    continue;
                }
                pointB++;
            }
            return answer;
        }

        public static void main(String[] args) throws IOException {
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
            BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out));

            StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine(), " ");
            int N = Integer.parseInt(stringTokenizer.nextToken());
            int K = Integer.parseInt(stringTokenizer.nextToken());

            int[] numbers = new int[N];
            stringTokenizer = new StringTokenizer(bufferedReader.readLine(), " ");
            for (int i = 0; i < N; i++) {
                numbers[i] = Integer.parseInt(stringTokenizer.nextToken());
            }

            Main main = new Main();
            int result = main.solution(K, numbers);

            bufferedReader.close();

            bufferedWriter.write(String.valueOf(result));
            bufferedWriter.flush();

            bufferedWriter.close();
        }
    }
}

참고한 자료