[백준] 2495. 연속구간

최대 1 분 소요

문제 링크

[백준] 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를 증가시킨다.
    • 다르다면, 이전까지 센 cntmax보다 크다면 갱신한다. 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);
        }
    }
}

카테고리:

업데이트:

댓글남기기