제목은 1일 1알고리즘이지만 문제 푸는게 너무 재밌습니다.. ㅋㅋ
문제
https://www.acmicpc.net/problem/8958
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.
"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.
OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.
첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 0보다 크고 80보다 작은 문자열이 주어진다. 문자열은 O와 X만으로 이루어져 있다.
사이트에 들어가셔서 예제를 보시면 이해가 더 쉽습니다.
풀이
x = int(input()) # 테스트 케이스(줄)의 개수
OX = [] # 테스트 케이스를 저장할 배열
for i in range(0, x):
oxInput = str(input()) # 테스트 케이스를 문자열로 입력받음
OX.append(oxInput) # 입력 받은 문자열을 OX에 넣어줌
for y in range(0, x):
str = OX[y] # 변수 str에 OX[y]의 값을 for문이 돌때마다 새로 넣어줌
length = len(str) # 문자열의 길이를 구해 length에 넣어줌
score = 0 # 점수를 저장할 변수, 아래 for문이 끝나면 0으로 초기화
inc = 0 # 연속된 O가 나왔을 때 배점을 증가시켜줄 변수, 아래 for문이 끝나면 0으로 초기화
for z in range(0, length): # 범위를 0~length로 해줘 문자열을 다 잘라줍시다.
a = str[z:z+1] # 루프 돌때마다 자른 문자열을 a에 넣어줍니다.
if a == "O": # 연속해서 a 값이 "O"이면 계속 inc를 증가시켜 score와 더합니다.
inc += 1
score = score + inc
elif a == "X": # a 값이 "X"가 나오면 inc를 0으로 바꿔줍니다.
inc = 0
print(score)
주석을 참고해주시기 바랍니다.
결과
'IT > 알고리즘' 카테고리의 다른 글
1일 1알고리즘 - #6 (0) | 2020.05.15 |
---|---|
1일 1알고리즘 - #5 (0) | 2020.05.14 |
1일 1알고리즘 - #3 (0) | 2020.05.13 |
1일 1알고리즘 - #2 (0) | 2020.05.12 |
1일 1알고리즘 - #1 (0) | 2020.05.12 |
댓글