본문 바로가기
알고리즘/백준 solved.ac PS

[백준][solved.ac][Bronze 2][Python] 2495번 : 연속구간

by 빛밤하늘 2021. 6. 22.
반응형

밑의 링크는 백준에서의 문제 링크입니다.

 

2495번: 연속구간

여덟 자리의 양의 정수가 주어질 때, 그 안에서 연속하여 같은 숫자가 나오는 것이 없으면 1을 출력하고, 있으면 같은 숫자가 연속해서 나오는 구간 중 가장 긴 것의 길이를 출력하는 프로그램을

www.acmicpc.net

 

 

 

 

 

 

 

 

파이썬 코드와 결과입니다.

# readline을 사용하기 위해 import합니다.
from sys import stdin


# 여덟 자리 양의 정수를 3개 입력하므로 3번 반복합니다.
for _ in range(3):
    # 여덟 자리 양의 정수를 입력합니다.
    # 맨 끝의 \n은 떼어줍니다.
    num = stdin.readline().rstrip()
    # 연속해서 나오는 구간 중 가장 긴 것의 길이를 저장할 변수를 선언합니다.
    # 최소 연속구간은 모두 연속하지 않는 경우이므로 1로 초기화합니다.
    max_same_num_cnt = 1

    # 현재 연속 중인 숫자를 저장하는 변수를 선언합니다.
    # 맨 처음 숫자로 초기화합니다.
    cur_num = num[0]
    # 현재 연속 중인 숫자의 연속 구간 길이를 저장할 변수를 선언합니다.
    # 최소 연속구간은 모두 연속하지 않는 경우이므로 1로 초기화합니다.
    cur_num_same_cnt = 1
    # 여덟 자리 양의 정수에서 두 번째 숫자부터 끝까지 반복합니다.
    for idx in range(1, 8):
        # 현재 숫자가 바로 뒤의 숫자와 같다면
        if num[idx] == num[idx - 1]:
            # 현재 연속 중인 숫자의 연속 구간 길이에 1을 더해줍니다.
            cur_num_same_cnt += 1

            # 현재 연속 중인 숫자의 연속 구간 길이의 값이 이전까지의 연속 구간 중 가장 긴 것의 길이의 값보다 크다면
            if cur_num_same_cnt > max_same_num_cnt:
                # 현재 연속 중인 숫자의 연속 구간 길이의 값을 연속해서 나오는 구간 중 가장 긴 것의 길이에 넣어줍니다.
                max_same_num_cnt = cur_num_same_cnt
        # 현재 숫자가 바로 뒤의 숫자와 다르다면
        else:
            # 현재 연속 중인 숫자 변수에 현재 숫자를 넣어줍니다.
            cur_num = num[idx]
            # 현재 연속 중인 숫자의 연속 구간 길이를 1로 만듭니다.
            cur_num_same_cnt = 1
    
    # 연속 구간 중 가장 긴 것의 길이를 출력합니다.
    print(max_same_num_cnt)

결과

 

첫 번째 제출했을 때, 위의 코드에서 1로 초기화해야 되는 변수들인

max_same_num_cnt, cur_num_same_cnt에 1 대신 0을 넣고 제출해버려 

틀렸습니다 결과가 나왔습니다.

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

반응형

댓글