백준 8958번 OX퀴즈
문제
OX퀴즈 결과 문자열이 주어진다. O는 정답, X는 오답이며, 정답인 문제의 점수는 그 문제까지 연속한 O의 개수다. 예를 들어 OOXXOXXOOO의 점수는 1+2+0+0+1+0+0+1+2+3 = 10이다. 첫 줄에 테스트 케이스 수가 주어지고, 각 케이스(길이 1 이상 79 이하)마다 점수를 출력한다.
풀이
O가 연속될 때 더해지는 값이 1, 2, 3 으로 하나씩 늘어난다. 이 값을 담는 변수 pls를 1에서 시작해 O를 만날 때마다 총점 sum에 더하고 1 올린다. X를 만나면 pls를 1로 되돌린다.
식은 머릿속에 있었지만 구현 방법이 막혀 다른 블로그를 참고했다. 테스트 케이스 수 N을 받아 반복문을 돌리고, 안에서 한 줄을 list(input())으로 문자 단위로 쪼갠다.
N = int(input())
# O가 연속한 개수에 따라 출력값을 설정
# ex) O 1개 = 1 , 2개 = 1 + 2, 3개 = 1 + 2 + 3
for i in range(N):
answer = list(input())
sum = 0
pls = 1
for i in answer:
if i == 'O':
sum += pls
pls += 1
else:
pls = 1
print(sum)짚고 갈 점
sum은 내장 함수 이름이라 변수명으로 쓰면 그 함수를 가린다. 이 코드에서는sum()을 따로 쓰지 않아 문제는 없다.- 바깥 반복문과 안쪽 반복문이 같은 이름
i를 쓰지만, 바깥i는 사용하지 않아 결과에 영향이 없다. - 한 번 더 풀어 볼 가치가 있는 문제다.