https://www.acmicpc.net/problem/8958
8958번: OX퀴즈
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수
www.acmicpc.net
🗒 풀이
java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] answers = new String[sc.nextInt()];
for (int i = 0; i < answers.length; i++) {
answers[i] = sc.next();
}
for (int i = 0; i < answers.length; i++) {
int sum = 0;
int count = 0;
for (int j = 0; j < answers[i].length(); j++) {
if (answers[i].charAt(j) == 'O') {
count += 1;
sum += count;
} else {
count = 0;
}
}
System.out.println(sum);
}
}
}
일단 answers 배열에 입력받은 정답을 저장한다.
다음 answers 배열을 탐색하면서 j 자리가 O, 즉 맞은 경우에는 count를 하나 높인 후에 sum 변수에 누적시킨다. 이는 연속된 정답 값을 처리하기 위함이다.
만약 O가 아닌 틀린 X라면, count를 0으로 초기화한다.
python
num = int(input())
for _ in range(num):
answer = list(input())
score = 0
count = 0
for a in answer:
if a == 'O':
count += 1
score += count
else:
count = 0
print(score)
자바와 같은 메커니즘이다.
여기서는 첫 번째 for문에 _ 값을 썼는데, for i in range(num): 으로 해도 됐었지만 i 값을 그 어디에서도 사용하지 않기에 불필요한 변수는 _을 사용함으로써 줄여줬다.
'알고리즘' 카테고리의 다른 글
[백준] 10809번: 알파벳 찾기 (java, python) (0) | 2022.07.14 |
---|---|
[백준] 10171번: 고양이 (java, python) (0) | 2022.07.12 |
[백준] 3052번: 나머지(java, python) (0) | 2022.07.11 |
[백준] 2920번: 음계 (java, python) (0) | 2022.07.11 |
[백준] 2908번: 상수(java, python) (0) | 2022.07.11 |