https://www.acmicpc.net/problem/8958
알고리즘
연속된 기호, 숫자를 세는 조건은 무엇일까? 또한 지금까지 연속된 기호, 수가 몇개인지 세기 위해선 어떻게 해야 할까?
많은 방법이 있겠지만 이 문제에서는 이번 기호가 'O'라면, 분기를 나누어 '이전 기호'가 'X' 라면 연속된 횟수 1로 바꾸거나,
그게 아니라면 계속해서 연속 횟수 c를 하나 증가시키는 방법을 사용했다.
그 이외의 경우라면, 현재 기호가 'X'이므로 c를 0으로 초기화했다.
점수를 계산하기 위해선 '현재까지의 O 수'를 세어야 하는데 이 역할을 cnt로 대신했다.
또한 이전 원소를 체크하기 때문에 index가 0번째인 원소는 c를 1로 고정하도록 예외 처리 해 주었다.
코드
input = __import__('sys').stdin.readline
for _ in range(int(input())):
a = list(input().strip())
cnt, c = 0,0
for i, elem in enumerate(a):
if elem == 'O':
cnt += 1 + c
if (i == 0 or a[i-1] == 'X'):
c = 1
if (i != 0 and a[i-1] == 'O'):
c += 1
else:
c = 0
print(cnt)
'Koala - 17기 > 코딩테스트 기초 스터디' 카테고리의 다른 글
[백준/C++] 18111번 마인크래프트 (0) | 2025.01.19 |
---|---|
[백준/Python] #4435 중간계 전쟁 (0) | 2025.01.12 |
[백준/C++]9996번 : 한국이 그리울 땐 서버에 접속하지 (0) | 2025.01.12 |
[백준/Python]2839번 : 설탕 배달 (0) | 2025.01.12 |