https://www.acmicpc.net/problem/8958
1. 아이디어
연속된 O의 개수로 점수를 산정하는 방식은 1부터 N까지의 합을 구하는 N * (N + 1) / 2 로 간단하게 구할 수 있다.
2. 문제풀이
StringTokenizer를 활용해서 입력을 처리했다. 구분자로 "X"를 사용하면 "O"들만 토큰으로 처리할 수 있고, 이때 토큰의 길이를 통해 연속된 문제 점수의 합을 구할 수 있다.
3. 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
StringTokenizer st;
int T = Integer.parseInt(br.readLine());
for (int tc = 1; tc <= T; tc++) {
st = new StringTokenizer(br.readLine(), "X");
int sum = 0;
while (st.hasMoreTokens()) {
int len = st.nextToken().length();
sum += len * (len + 1) / 2;
}
sb.append(sum).append("\n");
}
bw.write(sb.toString());
bw.flush();
}
}
4. 후기
'코딩테스트 준비 > 백준' 카테고리의 다른 글
[백준] 5354번 - J박스 [Java] (0) | 2025.01.06 |
---|---|
[백준] 2292번 - 벌집 [Java] (0) | 2025.01.06 |
[백준] 2163번 - 초콜릿 자르기 [Java] (0) | 2025.01.06 |
[백준] 2565번 - 전깃줄 [Java] (0) | 2025.01.05 |
[백준] 2446번 - 별 찍기 - 9 [Java] (0) | 2025.01.05 |