250x250
Notice
Recent Posts
Recent Comments
Link
멋쟁이v의 개발일지
[백준 8958번] OX퀴즈(파이썬) 본문
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
'0년차 > 알고리즘(1차원 배열)' 카테고리의 다른 글
[백준 4344번] 평균은 넘겠지(파이썬) (1) | 2022.11.28 |
---|---|
[백준 5597번] 과제 안 내신 분(파이썬) (0) | 2022.11.28 |
[백준 1546번] 평균(파이썬) (1) | 2022.11.27 |
[백준 3052번] 나머지(파이썬) (1) | 2022.11.27 |
Comments