규도자 개발 블로그
[백준/8958/파이썬3(python3)] OX퀴즈 본문
문제
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.
"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.
OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 0보다 크고 80보다 작은 문자열이 주어진다. 문자열은 O와 X만으로 이루어져 있다.
출력
각 테스트 케이스마다 점수를 출력한다.
입출력 예
입력 | 출력 |
---|---|
5 OOXXOXXOOO OOXXOOXXOO OXOXOXOXOXOXOX OOOOOOOOOO OOOOXOOOOXOOOOX | 10 9 7 55 30 |
풀이
testcase_count = int(input())
result_list = []
for testcase_index in range(0, testcase_count):
ox_input = input()
current_case_score = 0
combo_score = 0
for ox in ox_input:
if ox == 'O':
combo_score += 1
else:
combo_score = 0
current_case_score += combo_score
result_list.append(current_case_score)
print(*result_list)
설명
너무 간단하게 풀려서 고민했었다. 좀 더 세련된 방법은 없을까 하고. 해서 정규식이나 기타 문자열 구분 함수를 찾아보고 다른 사람들 코드도 다 찾아봤는데 한 줄만에 해결해 버린 사람도 있고 이런 사람 저런 사람도 있었지만 결국 나는 이렇게 다 풀어써서 직관적으로 읽히는 소스가 제일 마음에 든다. 뭐 당연한 얘기지만 말이다. 내가 그런 코드를 선호하니까 이런 모양새가 나왔겠지... for문 안에 있는, 입력된 ox를 구분하여 점수를 추가하는 부분을 컴프리헨션을 통해 구현할까 생각도 들었지만 그냥 냅뒀다.
'알고리즘 > 풀이' 카테고리의 다른 글
[백준/1065/파이썬3(python3)] 한수 (0) | 2019.02.18 |
---|---|
[백준/1260/파이썬3(python3)] DFS와 BFS (13) | 2019.02.16 |
[백준/4344/파이썬3(python3)] 평균은 넘겠지 (0) | 2019.02.14 |
[기타/파이썬3(python3)] Kaprika넘버 (0) | 2018.10.21 |
[백준/4673/파이썬3(python3)] 셀프 넘버 (6) | 2018.10.14 |
Comments