Algorithm/문자열

[Baekjoon/JAVA] 백준 1032번 명령 프롬프트

양선규 2023. 6. 30. 22:10
728x90
반응형

문제
입/출력

 

입력받은 문자열들의 각 문자를 모두 비교하여,

모두 같지 않다면 해당 문자를 ?로 바꾸는 문제입니다.

모두 같다면 문자를 그대로 출력합니다.

입력받는 문자열들의 길이는 동일합니다.

 

 

import java.util.*;
import java.io.*;
public class Main {
	public static void main(String[] args) throws IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		
		int n = Integer.parseInt(br.readLine());
		String arr[] = new String[n];
		
		for(int i=0; i<arr.length; i++) {
			arr[i] = br.readLine();
		}
		for(int i=0; i<arr[0].length(); i++) {
			int num = 1;
			char s = arr[0].charAt(i);
			
			for(int j=1; j<n; j++) {
				if(s != arr[j].charAt(i)) {
					num = 0;
					
					break;
				}
			}
			if(num == 1) {
				sb.append(s);
			}
			else {
				sb.append("?");
			}
		}
		System.out.println(sb);
		
		br.close();
	}
}

 

2중 반복문을 구성하여 각 문자를 모두 비교하였습니다.

 

s 변수에 비교의 기준이 될 arr[0]의 값을 저장해 두고, 반복문으로 charAt(i)의 i값만 증가시켜 각 인덱스를 비교하였습니다.

비교구문 시작시마다 num변수의 값을 1로 초기화해둔 후,

만약 글자가 다르다면 num의 값을 0으로 바꾸고 break 하였습니다.

그리고 num의 값이 1 그대로일 경우(비교결과 같을 경우) 해당 문자를 그대로 추가했고

num의 값이 0일 경우(비교결과 다를 경우) 해당 문자 대신 "?"를 추가했습니다.

 

그리고 최종적으로 만들어진 문자열을 출력하여 문제를 해결하였습니다.

 

728x90
반응형