⌨️ Algorithms/백준
[Python] 백준 2495번_연속구간
monzheld
2023. 3. 13. 22:58
https://www.acmicpc.net/problem/2495
2495번: 연속구간
여덟 자리의 양의 정수가 주어질 때, 그 안에서 연속하여 같은 숫자가 나오는 것이 없으면 1을 출력하고, 있으면 같은 숫자가 연속해서 나오는 구간 중 가장 긴 것의 길이를 출력하는 프로그램을
www.acmicpc.net
- 여덟 자리의 양의 정수가 주어질 때, 그 안에서 연속하여 같은 숫자가 나오는 것이 없으면 1을 출력하고, 있으면 같은 숫자가 연속해서 나오는 구간 중 가장 긴 것의 길이를 출력
- 예를 들어 세 개의 숫자 12345123, 17772345, 22233331이 주어졌을 때,
- 12345123은 연속하여 같은 숫자가 나오는 것이 없으므로 1
- 17772345는 7이 세 개 연속하여 나오므로 3을 출력
- 22233331의 경우에는 2가 세 개, 3이 네 개 연속해서 나오므로 그 중 큰 값인 4를 출력
- 입력
- 첫째 줄부터 셋째 줄까지 각 줄에 하나씩 세 개의 여덟 자리 양의 정수가 주어짐
- 출력
- 첫째 줄에서 셋째 줄까지 한 줄에 하나씩 각 입력된 수 내에서 같은 숫자가 연속하여 나오는 가장 긴 길이를 입력 순서대로 출력
- 시간 제한: 1초
- 메모리 제한: 128 MB
"""
입출력 예시)
12345123
17772345
22233331
-> 1
3
4
"""
## 의사코드 ##
# 첫째 줄부터 셋째 줄까지 입력
# for _ in range(3):
# n = str(input())
# 현재까지의 최댓값
# current_max = 1
# 연속해서 나온 구간의 길이
# cnt = 1
# 여덟 자리의 양의 정수
# for i in range(1, 8):
# 연속해서 같은 숫자가 나오면 길이 + 1
# 다른 숫자가 나오면 현재까지의 최댓값을 갱신하고, 연속해서 나온 구간의 길이 초기화
통과한 코드
# 첫째 줄부터 셋째 줄까지 입력
for _ in range(3):
n = str(input())
current_max = 1 # 현재까지의 최댓값
cnt = 1 # 연속해서 나온 구간의 길이
# 여덟 자리의 양의 정수
for i in range(1, 8):
# 연속해서 같은 숫자가 나오면 길이 + 1
if n[i-1] == n[i]:
cnt += 1
# 다른 숫자가 나오면 현재까지의 최댓값을 갱신하고, 연속해서 나온 구간의 길이 초기화
else:
current_max = max(current_max, cnt)
cnt = 1
current_max = max(current_max, cnt)
print(current_max)
-> 현재까지의 최댓값과 연속해서 나온 구간의 길이를 변수로 생성해서 비교
참고)
https://sunchol21.tistory.com/687
백준 2495 연속구간
1 2 3 4 5 6 7 8 9 10 11 12 for _ in range(3): s = str(input()) mymax = 1 cnt = 1 for i in range(1,len(s)): if s[i]==s[i-1]: cnt+=1 else: mymax=max(cnt,mymax) cnt=1 mymax = max(cnt, mymax) print(mymax) cs
sunchol21.tistory.com