Koala - 5기/기초 알고리즘 스터디

[백준/python] 2495. 연속구간

jeonyoungseo 2022. 1. 19. 23:44

8자리의 양의 정수가 주어질 때 그 안에서 연속하여 같은 숫자가 나오는 구간 중 가장 긴 것의 길이를 출력하는 문제이다. 일단 우선적으로 생각할 수 있는 것이 0번째부터 7번째 까지(여덟자리 라고 하였으므로) loop를 돌면서 검증을 하는 것인데, 이 때 ★지금 현재 위치에 있는 것과 바로 뒤 꺼를 비교할 때 for문 범위가 벗어나는 것이 가장 큰 문제였다. 따라서 양의정수와 아무 연관이 없는 문자 a를 붙인 다음에 loop를 그냥 0~7를 돌면 된다.

이후 if문을 선행하는 순서대로 나열한다.! 주석에 구체적인 설명이 있다

 

for i in range(3):
    s=input()
    #일단 연속해서 나오는 게 있는지 검증
    s+='a'
    max=1
    t=-1
    sum=0
    #연속하는 게 있다. 이제 연속하는 숫자들의 개수를 나열해야 함
    for i in range(8):
        if s[i]==t: #이제 계속 비교를 하는데 t랑 숫자가 같아
            sum+=1    #그러면 sum을 하나씩 더해주기
            if sum>max:
                max=sum #만약에 max보다 커지면 바꿔주기
            
        if s[i+1]!=s[i] : #내 바로 뒤에꺼가 나랑 달라
            sum=0 #초기화해주고 내 뒤에껄로 가기
            continue
        if s[i+1]==s[i] and sum==0: #내 뒤에꺼랑 같은데 sum은 0이었어
            t=s[i] #그 글자 특정해주기
            sum=1  #이제 시작해줘야 되니까 sum을 1로 시작해주기

    print(max)