명령 프롬프트 [백준] 1032번 java

최준호·2022년 5월 2일
0

algorithm

목록 보기
35/39
post-thumbnail

문제링크

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;

public class B1032 {
    public static void main(String[] args) throws Exception{

        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        int input = Integer.valueOf(bf.readLine().trim());
        String[] strs = new String[input];
        for(int i=0; i<input; i++){
            strs[i] = bf.readLine().trim();
        }

        sb.append(solve(strs));
        System.out.println(sb);
    }
    public static String solve(String[] strs){
        int length = strs[0].length();
        char[] chars = new char[length];

        Arrays.stream(strs).forEach(s -> {
            char[] chars1 = s.toCharArray();
            for(int i=0; i<length; i++){
                if(chars[i] == 0){  //char가 비었을 땐 0으로 체크
                    chars[i] = chars1[i];
                    continue;
                }
                else if(chars[i] == '?') continue;
                else if(chars[i] != chars1[i]){
                    chars[i] = '?';
                }
            }
        });

        return String.valueOf(chars);
    }
}

문제 자체 제한시간도 2초였고 입력값이 크지 않아 2중 for문으로 풀이했고 O(n log n)의 시간복잡도로 풀어낼 수 있도록 최대한 시간을 줄이도록 했다.

쉽게 풀었지만 그나마 애먹었던 부분은 char가 비었을 땐 0으로 체크한다는 부분이였다.

profile
코딩을 깔끔하게 하고 싶어하는 초보 개발자 (편하게 글을 쓰기위해 반말체를 사용하고 있습니다! 양해 부탁드려요!) 현재 KakaoVX 근무중입니다!

0개의 댓글