Java

[Java] BOJ 8958번 관련 String -> char 자료형 변환

Rachel_ 2022. 1. 7. 11:54

1. charAt() 사용하기.

 

총 출력될 행의 갯수 : 5
OOXXOXXOOO
OOXXOOXXOO
OXOXOXOXOXOXOX
OOOOOOOOOO
OOOOXOOOOXOOOOX

 

각 행마다 O와 X가 섞인 String 타입 데이터를 받을 예정.

여기서 O와 X를 분리해야 한다. 따라서 String 타입의 데이터를 char 로 하나씩 쪼개야 한다.

 

BufferReader br = new BufferReader(new StreamReader(System.in));
int N = Integer.parseInt(br.readLine()); // N는 출력될 행의 갯수이자 만들 string 배열의 인덱스값
String[] arr = new String[N] // arr이라는 배열이 차지하는 공간을 N개만큼 할당한다.
	for(int i = 0; i<N; i++){
		arr[i] = br.readLing(); // N 다음에 입력되는 OXXOXOXOO 와 같은 하나의 행이 arr[0] 의 데이터로 들어간다.
	}
    for(int i = 0; i<N; i++){
    	for(int j = 0; j<arr[i].length; j++){
        	System.out.printf("%3c", arr[i].charAt(j));
            //arr[0~4]의 charAt(0~i.length)까지의 값, 즉 OXXOXOXOO 의 총 갯수가 한개씩 출력됨
		}
    }
}

 

혹은 ToCharArray()를 이용해 처음부터 char형으로 쪼개 넣을 수도 있다.

/* 5
OOXXOXXOOO
OOXXOOXXOO
OXOXOXOXOXOXOX
OOOOOOOOOO
OOOOXOOOOXOOOOX
와 같은 input 데이터가 있다면;
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Num8958_2 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        String[] arr = new String[N];
        for(int i = 0; i < N; i++){
            arr[i] = br.readLine();
        }
        for(int i = 0; i < N; i++){
            char[] arrCh = new char[arr[i].length()];
            int cnt = 0;
            int sum = 0;
            for(int j = 0; j<arr[i].length(); j++){
                arrCh = arr[i].toCharArray();
                if(arrCh[j] == 'O'){
                    cnt++;
                } else {
                    cnt=0;
                }
                sum += cnt;
            }
            System.out.println(sum);
        }
    }
}