푸르미르

[python]8958.OX퀴즈 본문

Baekjoon Online Judge

[python]8958.OX퀴즈

((•_•)) 2021. 1. 1. 22:05

 OX문제이다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
case=int(input()) #테스트 케이스 개수 입력
score_list=[]  #한 케이스의 OX결과
total=0 #한 케이스의 총점
xloc=0 #바로 전의 X의 location
for i in range(case): 
    quizResult=input() 
    quizResult.upper() #혹시 모를, 대문자화
    for j in range(len(quizResult)):
        if quizResult[j]=='O':
            total+=quizResult.count('O',xloc,j+1#이 문제의 키 포인트
        else:
            xloc=#이 문제의 키포인트2
    print(total)
    total=0 #주의!
    xloc=0 #주의!
cs

 

이 문제에서 까다로웠던 점은 한 케이스당 점수를 계산하는 것인데, 문자열에 O가 등장했을 때, 그 O까지 연속된 O의 개수를 계산해야했다는 것이다. 코딩테스트 알고리즘에 익숙치 않다면 처음에 조금 힘들었을 문제다. 왜냐하면 중간에 X가 나왔다면 그것까지 고려해야 하기 때문이다. 그래서 사용한 함수는 count라는 함수이다. 

 

전체문자열.count(검색할 문자열 및 문자, 시작위치, 끝위치)

count함수는 찾을 문자열 및 문자가 총 해당 전체 문자열에서 몇개인지 알려주는 함수이다. 아예 count(검색할 문자열 및 문자)로 해서 전체문자열의 index 0에서 끝까지 검색을 할 수 있다. 여기서 시작위치를 X가 마지막으로 나온 문자열 index로 해주고 끝위치를 해당 인덱스의 +1을 해주어야 한다. 이때 X가 마지막으로 나온 위치는 코드의 12번째 줄처럼 갱신해준다. 

또 하나의 케이스가 끝나고 다시 0으로 되돌려야 할 변수들을 0으로 다시 되돌리는 것을 잊지 말아야한다.

 

www.acmicpc.net/problem/8958

'Baekjoon Online Judge' 카테고리의 다른 글

[python]3052.나머지  (2) 2021.01.01
[python]2577.숫자의 개수  (0) 2021.01.01
[python]2562.최댓값  (0) 2021.01.01
[python]10818.최소, 최대  (0) 2021.01.01
[python]1546.평균  (0) 2021.01.01