여덟 자리의 양의 정수가 주어질 때, 그 안에서 연속하여 같은 숫자가 나오는 것이 없으면 1을 출력하고, 있으면 같은 숫자가 연속해서 나오는 구간 중 가장 긴 것의 길이를 출력하는 프로그램을 작성하라.
예를 들어 세 개의 숫자 12345123, 17772345, 22233331이 주어졌다고 하자. 12345123은 연속하여 같은 숫자가 나오는 것이 없으므로 1을 출력하고, 17772345는 7이 세 개 연속하여 나오므로 3을 출력하며, 22233331의 경우에는 2가 세 개, 3이 네 개 연속해서 나오므로 그 중 큰 값인 4를 출력하여야 한다.
첫째 줄부터 셋째 줄까지 각 줄에 하나씩 세 개의 여덟 자리 양의 정수가 주어진다.
첫째 줄에서 셋째 줄까지 한 줄에 하나씩 각 입력된 수 내에서 같은 숫자가 연속하여 나오는 가장 긴 길이를 입력 순서대로 출력한다.
입력 1
12345123
17772345
22233331
출력 1
1
3
4
for _ in range(3): # 각 줄에 하나씩 세 개의 양의 정수가 주어짐
num = list(input()) # 숫자 입력받아 배열로 나누기
arr = [num[0]] # 첫번째 숫자 담기
answer = [1] # 연속하여 같은 숫자가 나오는 것이 없으면 1을 출력하기 위해 1을 저장해둠
cnt = 1 # arr에 숫자가 하나 담겼기 때문에 cnt에 1 저장
for i in range(1, 8): # 숫자는 여덟 자리의 양의 정수기 때문에 7번 반복
if(arr[len(arr)-1]==num[i]): # arr에 담겨있는 숫자와 현재 숫자가 같다면
cnt += 1 # 일을 추가함
else: # 아니라면
arr.append(num[i]) # 그 수를 arr에 추가하고
answer.append(cnt) # cnt값을 answer에 저장
cnt = 1 # cnt는 1로 초기화
# 계속해서 arr에 담겨있는 숫자와 현재 숫자가 같아 저장이 되지 않았을 cnt를 위해서 answer에 cnt추가
answer.append(cnt)
print(max(answer)) # 그 중 가장 큰 값을 출력하기 위해서 max 활용
예를 들어 11111111과 같이 arr에 담겨있는 숫자와 현재 수가 같은 숫자를 입력 받는다면 cnt값이 answer에 저장되지 않아서 원하는 값을 도출할 수 없게 되는 것을 찾는데 시간이 걸렸습니다. 늘 다양한 경우의 수를 생각해야겠습니다.
[백준/Python] 5363 : 요다 (0) | 2021.05.26 |
---|---|
[백준/Python] 3059 : 등장하지 않는 문자의 합 (0) | 2021.05.25 |
[백준/Python] 1919 : 애너그램 만들기 (0) | 2021.05.23 |
[백준/Python] 1267 : 핸드폰 요금 (0) | 2021.05.22 |
[백준/Python] 1547 : 공 (0) | 2021.05.21 |
댓글 영역