Java/백준 알고리즘
백준 8958번 (JAVA)
Leopard Cat
2022. 3. 14. 18:06
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.
"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.
OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.
위와같은 문제였다.
배열에 값을 담아, 각 문자별로 비교하는 방식으로 작성했다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
String array[] = new String[N];
int discrimination = 0; //자릿값이 O인 경우에 값을 증가시킨다.
int sum[] = new int[N]; //합
for(int i=0;i<N;i++){ //처음 N의 개수만큼 반복한다.
array[i] = br.readLine(); //다음줄을 읽어온다.
for(int j=0;j<array[i].length();j++){ //읽어온 줄의 길이만큼 반복한다.
if(array[i].charAt(j) == 'O'){ //배열의 j번째값이 'O' 이라면...
++discrimination; //discrimination 값을 증가시킨다.
sum[i] = sum[i]+discrimination; //기존의 sum의 값에 추가로 discrimination값을 더해준다
}
else{
discrimination = 0; //만약 값이 X라면 discrimination의 값을 0으로 초기화한다.
}
}
discrimination =0; //한줄의 반복이 끝나면 다음줄을 위해 discrimination의 값을 0으로 초기화시킨다.
}
br.close();
for(int i=0;i<N;i++){
System.out.println(sum[i]);
}
}
}
처음에 charAt()라는 함수를 몰라, 한참동안 해결하지 못했다.
charAt이란 string 타입으로 받은 문자열을 char 타입으로 한 글자만 받는 함수라고 한다.
이걸 활용해 array배열에 담긴 "OXXXO"같은 문자열을 char 타입으로 한글자씩 받아와 'O'와 같은지 비교했다.
내 기준에서 처음으로 간단한 알고리즘으로 풀어서 뿌듯했다.ㅎㅎ
반응형