[JAVA] 백준 10798

공부기록·2024년 2월 15일
0
post-thumbnail
  • 2차원 배열에 익숙해지기 위한 문제

  • Scanner를 쓸 지 Buffer를 쓸 지 고민하다가 빈 칸이 존재한다고 생각하고 Buffer를 정한건데 빈칸이 없어서 처음 배열 첫째칸에 아예 한줄이 하나의 String 값으로 들어가버렸다..
  • 먼저 StringTokenizer로 받았는데 처음엔 한 칸에 하나의 글자만 들어가니까 toCharsArray(String)함수를 이용해서 적용하였는데 만약 글자수가 적은 줄에서 index에러가 발생했다...

  • 이렇게 되어있으면 arr[1][5]를 접근할 때 없다는 처리를 해줘야했는데 그냥 index bounds 오류가 발생해버리는거다... 다른 사람들은 어떻게 풀었는지 확인해보지 못했지만 나는 빈 부분은 다 '/0'을 채워버렸다.. 비효율적인가..

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        char[][] arr = new char[5][15];
        int max = 0;
        String result = "";


        //2차원 배열의 값 넣기
        for(int i = 0; i < 5; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            String line = st.nextToken();
            max = Math.max(line.length(),max);
            for (int j = 0; j < 15; j++) {
                if (j < line.length()){
                    arr[i][j] = line.charAt(j);
                } else {
                    arr[i][j] = '\0';
                }
            }
        }

        for(int j = 0; j < max; j++){
            for(int i = 0 ; i < 5; i++){
                if(arr[i][j] != '\0')
                    result += arr[i][j];

            }
        }
        System.out.println(result);
    }
}
  • charAt(int index)를 이용해서 하나씩 배열에 집어넣고 길이가 끝나면 다 '/0'으로 채우기
  • 출력할 때는 '\0'이 아닌 애들만 저장했다. max는 가장 긴 글자의 수로 지정해놨다.
  • 일단 정답. 근데 '/0'이 원래 빈부분에 들어간다는데 나는 인덱스 오류나는 이유를 못찾았다. 자바에선 초기화하려면 for문 돌려야된다는 거 같기도.. 그러면 이 방법이 나은건가.

0개의 댓글

관련 채용 정보