[백준] 2495. 연속구간
문제 링크
풀이 과정
문자열 내부를 한 번 순회하면서 연속된 숫자 개수를 세는 문제입니다.
char prev = str.charAt(0);
for (int j = 1; j < 8; j++) {
char now = str.charAt(j);
if (now == prev) {
cnt++;
} else {
max = Math.max(max, cnt);
cnt = 1;
prev = now;
}
max = Math.max(max, cnt);
}
System.out.println(max);
핵심이 되는 동작 과정은 다음과 같습니다.
- 맨 첫번째(0번 인덱스) 문자를
prev
에 담고, 두 번째(1번 인덱스) 문자부터 이전 문자prev
와 같은지 비교한다.- 같다면
cnt
를 증가시킨다. - 다르다면, 이전까지 센
cnt
가max
보다 크다면 갱신한다.cnt
는 1로 초기화하고,prev
는 현재 문자를 의미하는now
로 바꿔준다.
- 같다면
- 8글자 모두 같은 경우를 대비해, 순회를 할 때마다
max
를 갱신해주는 과정을 거친다.
코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 3; i++) {
String str = sc.nextLine();
int cnt = 1, max = 1;
char prev = str.charAt(0);
for (int j = 1; j < 8; j++) {
char now = str.charAt(j);
if (now == prev) {
cnt++;
} else {
max = Math.max(max, cnt);
cnt = 1;
prev = now;
}
max = Math.max(max, cnt);
}
System.out.println(max);
}
}
}
댓글남기기