BAEKJOON 문제 풀이 : 8958번 OX퀴즈
BAEKJOON2020. 3. 16. 14:35
문제 : https://www.acmicpc.net/problem/8958
8958번: OX퀴즈
문제 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다. "OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다. OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는
www.acmicpc.net
인풋을 배열로 입력받아 문자 'O'가 연속된 횟수를 더하는 문제입니다.
파이썬에서 list와 for는 떼려야 뗄 수 없는 관계라는걸 다시 한 번 생각하게된 문제였습니다.
문제 풀이는 아래와 같습니다.
1. Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int cntLoop = Integer.parseInt(br.readLine());
for (int i = 0; i < cntLoop; i++) {
char[] arrChar = br.readLine().toCharArray();
int score = 0;
int cntContinuity = 0;
for (int j = 0; j < arrChar.length; j++) {
if (arrChar[j] == 'O') {
cntContinuity++;
score += cntContinuity;
} else {
cntContinuity = 0;
}
}
bw.write(score + "\n");
}
bw.close();
br.close();
}
}
|
cs |
2. Python 3
1
2
3
4
5
6
7
8
9
10
11
12
13
|
import sys
if __name__ == '__main__':
cntLoop = int(sys.stdin.readline())
for i in range(cntLoop):
inputData = sys.stdin.readline()
score = [0] * (len(inputData) + 1)
for j in range(len(inputData)):
if (inputData[j] == 'O'):
score[j + 1] = score[j] + 1
print(sum(score))
|
cs |
아래는 조금 더 짧게 줄인 코드입니다.
1
2
3
4
5
|
import sys
if __name__ == '__main__':
for i in range(int(sys.stdin.readline())):
print(sum(sum(range(1, len(j) + 1)) for j in sys.stdin.readline().strip().split('X')))
|
cs |
'BAEKJOON' 카테고리의 다른 글
BAEKJOON 문제 풀이 : 15596번 정수 N개의 합 (0) | 2020.03.16 |
---|---|
BAEKJOON 문제 풀이 : 4344번 평균은 넘겠지 (0) | 2020.03.16 |
BAEKJOON 문제 풀이 : 3052번 나머지 (0) | 2020.02.20 |
BAEKJOON 문제 풀이 : 2562번 최댓값 (0) | 2020.02.17 |
BAEKJOON 문제 풀이 : 10818번 최소, 최대 (0) | 2020.02.13 |