티스토리 뷰

728x90
반응형

문제

 

"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. 

O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 

문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 

예를 들어, 10번 문제의 점수는 3이 된다.

"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.

OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.

 

입력

 

첫째 줄에 테스트 케이스의 개수가 주어진다. 

각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 0보다 크고 80보다 작은 문자열이 주어진다. 

문자열은 O와 X만으로 이루어져 있다.

 

출력

 

각 테스트 케이스마다 점수를 출력한다.

 

풀이

 

자바로 처음 이 문제를 마주쳤을 때 시간이 조금 소모됐던 기억이 있다.

 

다행히 아직 잊지 않아서 로직 구성은 어렵지 않았다.

 

O가 연속해서 나오는 숫자만큼 개수를 세며 연속된 개수를 반복해서 더해준 뒤 출력하면 된다.

 

이번 문제에서 배운 건, 문자열을 바로 리스트로 변경하는 방법이다.

 

자바에선 .split()이라는 메서드로 구현한 이 기능은,

 

파이썬에선 좀 더 간결하다.

 

그냥 리스트 안에 참조변수를 넣어버리면 된다!

 

정확히 무슨 말인지는 아래 코드에서.

import sys

a = int(sys.stdin.readline())

for i in range(a):
    b = list(sys.stdin.readline()) # 문자열을 바로 리스트로 변경
    count = 0
    result = 0
    for j in b:
        if j == 'O':
            count += 1
            result += count
        else:
            count = 0
    print(result)
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/06   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
글 보관함