https://www.acmicpc.net/problem/8958
8958번: OX퀴즈
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수
www.acmicpc.net
문제
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.
"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.
OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 0보다 크고 80보다 작은 문자열이 주어진다. 문자열은 O와 X만으로 이루어져 있다.
출력
각 테스트 케이스마다 점수를 출력한다.
코드 정답
tc = int(input())
a = []
for i in range(tc):
a.append(input())
for i in range(tc):
sum = 0
count = 0
for j in range(len(a[i])):
if a[i][j] == "O":
count += 1
sum += count
elif a[i][j] == "X":
count = 0
print(sum)
풀이
1행 : 테스트 케이스의 개수를 입력받을 변수 tc 를 만든 후 문자를 입력받아 정수형으로 변환하여 저장한다.
2행: 변수 a 를 리스트 형식으로 만든다.
4행 : i 가 0부터 tc 에 저장되어 있는 값에 다다를때까지 5행을 반복한다.
5행 : 값을 입력받아 a 의 인덱스 번호에 맞춰 순차적으로 저장된다.(a[0]부터 저장)
7행 : i 가 0부터 tc 에 저장되어 있는 값에 다다를때까지 16행을 반복한다.
8행 : 변수 sum 을 0 이란 값을 주고 정수형으로 만든다.
9행 : 변수 count 를 0이란 값을 주고 정수형으로 만든다.
10행 : j 가 0부터 a[i] 에 저장되어 있는 문자의 길이에 다다를 때까지 15행을 반복한다.
11행 : 여러행이 입력되어 있기 때문에 a[i][j] 즉, 2차원 배열을 사용한다. a[0][1] 이라면 세로 인덱스 0번, 가로 인덱스 1번을 뜻한다. 만약 지정된 값이 O 라면 12행과 13행을 실행한다.
12행 : count 에 1을 더한다
13행 : sum 에 count 를 더한다.
14행 : 11행이 아닐 경우 그리고 a[i][j] 에 저장된 값이 X 일경우 15행을 실행한다.
15행 : count 에 0 을 대입한다.
16행 : 저장된 sum의 값을 출력한다.
'BaekJoon > 단계별로 풀어보기' 카테고리의 다른 글
[백준] 함수 - 15596번 (Python) (0) | 2022.11.23 |
---|---|
[백준] 1차원 배열 - 4344번 (Python) (1) | 2022.11.22 |
[백준] 1차원 배열 - 1546번 (Python) (0) | 2022.11.22 |
[백준] 1차원 배열 - 3052번 (Python) (0) | 2022.11.22 |
[백준] 1차원 배열 - 5597번 (Python) (0) | 2022.11.22 |