문제 풀이/백준

[백준] 1706번. 크로스워드(JAVA)

27200 2025. 2. 12. 21:53

문제

https://www.acmicpc.net/problem/1706


풀이(19분)

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));
        StringTokenizer st;

        st = new StringTokenizer(br.readLine());

        int r = Integer.parseInt(st.nextToken());
        int c = Integer.parseInt(st.nextToken());

        char[][] arr = new char[r][c];

        for(int i = 0; i < r; i++){
            String line = br.readLine();
            for(int j = 0; j < c; j++){
                arr[i][j] = line.charAt(j);
            }
        }

        StringBuilder sb = new StringBuilder();
        List<String> list = new LinkedList<>();

        for(int i = 0; i < r; i++){
            sb.setLength(0);
            for(int j = 0; j < c; j++){
                if(arr[i][j] != '#'){
                    sb.append(arr[i][j]);
                    continue;
                }
                if(sb.length() > 1){
                    list.add(sb.toString());
                }
                sb.setLength(0);
            }
            if(sb.length() > 1){
                list.add(sb.toString());
            }
        }


        for(int i = 0; i < c; i++){
            sb.setLength(0);
            for(int j = 0; j < r; j++){
                if(arr[j][i] != '#'){
                    sb.append(arr[j][i]);
                    continue;
                }
                if(sb.length() > 1){
                    list.add(sb.toString());
                }
                sb.setLength(0);
            }
            if(sb.length() > 1){
                list.add(sb.toString());
            }
        }
        
        Collections.sort(list);

        System.out.println(list.get(0));
    }
}

 

실버2치고 매우 단순한 문제라고 생각하여 접근했지만 꼼꼼하게 조건식을 체크하지 않아 한번 틀리고 맞추었다.

 

체크하지 못한 부분

#이 나와서 길이가 1 이상이면 list에 추가하는 로직 안에 sb를 초기화하는 것을 넣었다.

이 경우 a#b 일 때 sb가 초기화되지 않는 문제가 발생할 수 있었다.

 

또한, 문제에서 아쉬운 부분은 단어라는 것이 중복될 수 있는지 없는지가 애매모호 하여 자료구조 선정하는 부분에서 고민이 되었다.

 

물론, 사전식 배열이기 때문에 중복된 단어가 있어도 첫번째로 나올 단어는 나오게 된다. -> 그래도 아쉽다.