상세 컨텐츠

본문 제목

[백준/Python] 2495 : 연속구간

코딩테스트/백준

by 기며니 2021. 5. 24. 16:02

본문

728x90
728x90

ㄹ💚 문제 설명

여덟 자리의 양의 정수가 주어질 때, 그 안에서 연속하여 같은 숫자가 나오는 것이 없으면 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에 저장되지 않아서 원하는 값을 도출할 수 없게 되는 것을 찾는데 시간이 걸렸습니다. 늘 다양한 경우의 수를 생각해야겠습니다.

728x90
728x90

관련글 더보기

댓글 영역