백준

[백준] 명령 프롬프트 (1032번)

shs00925 2024. 10. 17. 23:53

코드 힌트

  1. 문제 이해:
    • 여러 문자열이 주어졌을 때, 모든 문자열에서 같은 위치의 문자가 동일한 경우 그 문자를 유지합니다.
    • 하지만 다른 문자가 있는 경우 해당 위치를 '?'로 바꿉니다.
  2. 아이디어:
    • 첫 번째 문자열을 비교 기준으로 사용합니다.
    • 두 번째 문자열부터 문자 하나하나를 비교하며 다른 문자가 있으면 해당 위치에 '?'를 설정합니다.
  3. 문자열 비교와 수정:
    • StringBuilder를 사용한 이유는 문자열을 수정할 수 있기 때문입니다.
    • String은 불변 객체이므로 StringBuilder가 성능적으로 유리합니다.

 


정답은 더보기 클릭

더보기
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in); // 입력을 받기 위한 Scanner 객체 생성

        int n = in.nextInt(); // 입력으로 주어지는 문자열의 개수
        in.nextLine(); // 버퍼를 비우기 위해 사용 (줄바꿈 문자 처리)

        // 첫 번째 문자열을 StringBuilder에 저장하여 비교 기준으로 사용
        StringBuilder sb = new StringBuilder(in.nextLine());

        // 두 번째 문자열부터 마지막 문자열까지 비교
        for (int i = 1; i < n; i++) {
            String s = in.nextLine(); // 현재 문자열 입력

            // 문자열의 각 문자들을 비교
            for (int j = 0; j < s.length(); j++) {
                // 기준 문자열과 현재 문자열의 문자가 다르면 '?'로 변경
                if (sb.charAt(j) != s.charAt(j)) {
                    sb.setCharAt(j, '?'); // 해당 위치의 문자를 '?'로 변경
                }
            }
        }

        // 최종적으로 완성된 패턴 출력
        System.out.print(sb);
    }
}