728x90
반응형
문제: https://www.acmicpc.net/problem/8958
문제 접근
입력 받은 문자열에서 charAt() 을 통해 이전 문자랑 현재 문자를 비교해야겠다고 생각했습니다.
그래서 저는 다음과 같이 조건을 나눠서 생각했습니다.
- 이전 문자는 'X'인데, 현재 문자가 'O'인 경우
- 이전 문자랑 현재 문자가 'O'인 경우
- 나머지 경우 (즉, 현재 문자가 'X'인 경우)
1번의 경우, 점수가 1이 됩니다. 연속 되는 'O'의 개수만큼 점수를 더 얻는데, 이 경우에는 'O'문자의 시작점? 이니까요!
2번의 경우, 원래의 점수(score)에서 1을 더해져서 점수는 score + 1이 됩니다.
3번의 경우, 현재 문자가 'X'이니 점수는 0이 됩니다.
그리고 점수를 다 더한 후, 출력하면 되겠죠?
엄.. 제가 설명을 잘 못했지만.. 코드를 보면 이해가 되실 거에요..!
전체 코드
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));
int n = Integer.parseInt(br.readLine());
for(int i = 0; i < n; i++) {
String s = br.readLine();
int score = 0;
char prev = 'O';
int sum = 0; // 점수의 합
for(int j = 0; j < s.length(); j++) {
if(s.charAt(j) != prev && s.charAt(j) == 'O'){
score = 1;
sum += score;
prev = s.charAt(j);
} else if (s.charAt(j) == prev && s.charAt(j) == 'O') {
score++;
sum += score;
} else {
score = 0;
}
}
bw.write(sum + "\n");
}
bw.close();
}
}
읽어주셔서 감사합니다!
728x90
반응형
'Java > 코딩테스트' 카테고리의 다른 글
[백준] 1764번: 듣보잡 (JAVA) (1) | 2025.04.18 |
---|---|
[백준] 9012번: 괄호 (JAVA) (1) | 2025.04.16 |
[백준] 1427번: 소트인사이드 (JAVA) (1) | 2025.04.12 |
[백준] 1181번: 단어 정렬 (JAVA) (1) | 2025.04.10 |
[백준] 2292번: 벌집 (JAVA) (0) | 2025.04.03 |