멋쟁이v의 개발일지

[백준 8958번] OX퀴즈(파이썬) 본문

0년차/알고리즘(1차원 배열)

[백준 8958번] OX퀴즈(파이썬)

멋쟁이v 2022. 11. 28. 15:50
728x90
320x100
문제
"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

 


 

풀이
이 문제는 O가 연속 될 경우 점수가 누적되어 더해지고, X가 있을 경우엔 0이 됩니다.

예제 1을 보면
    O O X X O X X O O O
-> 1  2 0  0 1  0  0 1  2  3 ( 'O'의 갯수)
정답 : 10

코드를 순서대로 작성한다면
1. OX 입력
2. 'O'를 카운트 할 변수와 카운트한 수를 더할 변수 선언
3. OX입력 한 길이 만큼 반복 후 인덱스 값 하나씩 비교
4. 'O'가 있다면 카운트 = +1, 정답 = +카운트값
5. 없다면 카운트 값을 0으로 초기화
6. 정답 변수 출력


작성 코드
N = int(input())

for _ in range(N):
    A = input() # OX 입력
    
    cnt = 0 # O의 갯수를 카운트 할 변수 선언
    answer = 0 # 카운트한 수를 더할 변수 선언
    
    for i in range(len(A)): # 입력 받은 OX길이 만큼 반복
        if A[i] == 'O': # A의 인덱스 0 ~ len(A) 까지 'O'이 존재하는지 확인
            cnt += 1 # 'O'이 있다면 갯수 세기
            answer += cnt # 갯수를 세고 연속 될 경우 변수에 저장
        else:
            cnt = 0 # 'X'일 경우 갯수를 0으로 초기화
            
    print(answer)
728x90
320x100
Comments