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)
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)
'Koala - 5기 > 기초 알고리즘 스터디' 카테고리의 다른 글
<2주차> [BOJ / C++] 11944번 - NN (0) | 2022.01.22 |
---|---|
[백준/python] 8958번 ox퀴즈 (0) | 2022.01.20 |
[백준/C++] 9012번 괄호 (1) | 2022.01.18 |
[백준/python] 14724 관리자는 누구? (0) | 2022.01.17 |
[백준/python] 11931 수정렬하기-4 (0) | 2022.01.17 |