Lewis's Tech Keep
[BOJ][16472] 고냥이 - JAVA 본문
링크 : https://www.acmicpc.net/problem/16472
참고 링크 : https://velog.io/@pss407/%EB%B0%B1%EC%A4%8016472-%EA%B3%A0%EB%83%A5%EC%9D%B4
- 풀이
: 투 포인터 문제
: 투 포인터의 힌트 : 어떤 한 배열에서의 길이가 최대가 되는 어떤 것을 구해야 함
- 후기 & 피드백
: 처음에 투 포인터인 것을 알아채기까지 시간이 좀 걸렸고 이후 현재 답 로직과 비슷하게 썼는데 한번에 start를 모두 체크를 하지 않으니 또 답이 틀린 경우가 있었다. 투 포인터 움직일 때 계속 n에서 돌기보다 end 옮긴 후 start를 한번에 다 옮기는 것이 훨씬 좋겠다.
더보기
import java.util.Arrays;
import java.util.Scanner;
public class Solution {
public static void main(String args[]) {
int answer = 1;
Scanner sc = new Scanner(System.in);
int n = Integer.parseInt(sc.nextLine());
String s = sc.nextLine();
int[] check = new int[26];
int start = 0;
int end = 0;
int count = 0;
while (end < s.length()) {
int num = s.charAt(end) - 'a';
check[num]++;
if (check[num] == 1) count++;
end++;
while (count > n) {
int numStart = s.charAt(start) - 'a';
check[numStart]--;
if (check[numStart] == 0) count--;
start++;
}
answer = Math.max(answer, end - start);
}
System.out.println(answer);
}
}
'Java > 알고리즘' 카테고리의 다른 글
[프로그래머스] 광고 삽입 - JAVA (0) | 2021.08.23 |
---|---|
[프로그래머스] 퍼즐 조각 채우기 - JAVA (0) | 2021.08.23 |
[BOJ][11047] 동전 0 - JAVA (0) | 2021.06.27 |
[BOJ][2304] 창고 다각형 - JAVA (0) | 2021.06.26 |
[프로그래머스] 경주로 여행 - JAVA (0) | 2021.06.26 |
Comments