본문 바로가기
IT/알고리즘

1일 1알고리즘 - #4

by Sungjun_ 2020. 5. 14.

제목은 1일 1알고리즘이지만 문제 푸는게 너무 재밌습니다.. ㅋㅋ

 

문제

https://www.acmicpc.net/problem/8958

 

8958번: OX퀴즈

문제 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 �

www.acmicpc.net

"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

댓글