package Main;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner (System.in);
// 문자열을 입력할 수
int testcase = in.nextInt();
// 문자열을 저장할 배열의 크
String [] stringArray = new String [testcase];
// 간단한 입력
for (int i = 0 ;i < stringArray.length; i ++) {
stringArray[i] = in.next();
}
// StringBuilder를 생성하기 위한 선언
String result = stringArray[0];
StringBuilder sb = new StringBuilder(result);
// 열 탐색 0번 배열 1번 인덱스
// 출력부
for (int row = 0; row < stringArray.length-1 ; row++) {
for (int col = 0; col <stringArray[0].length() ;col++) {
char nowIndex = stringArray[row].charAt(col);
char nextIndex = stringArray[row+1].charAt(col);
if(nowIndex != nextIndex) {
// 디버그 코드
// System.out.println(sb);
// System.out.println("now : " + nowIndex + " " + col);
// System.out.println("next : " + nextIndex + " " + col);
sb.setCharAt(col, '?');
//System.out.println("resultValue : " + sb);
}
}
}
System.out.println(sb);
}
}
테스트케이스만큼 배열을 생성하고 그 중 배열의 0번째 문자열을 변수 result 로 선언하고 저장한뒤, 각 배열의 문자열을 비교하여 다른경우 '?' result의 해당 문자를 변경하고 아닌경우 패스, 결과를 result를 출력하는 방법을 생각했다.
// 문자열 선언
String stringbulder = "대충 문자열";
// StringBuilder타입으로 문자열 선언
StringBuilder newString = new StringBuilder(stringbulder);
// StringBuilder의 setCharAt메서드 이용
newString.setCharAt(8, 'a');
// 출력
System.out.println(newString);
StringBuilder를 사용법은 잘 몰라서 대충 긁어쓰긴 했다.
내가 StringBuilder를 사용한 이유는 단순히 코드가 간결해서이다. Scanner이용해서 간단하게 처리하는 방법을 못찾았다... 다른방법이 있을 수 있다.
항상 Scanner을 사용해왔었는데 학교에서 Scanner만 주구장창 써서 그런것도 있다. 문자열 수정 때문에 인터넷에서 정보를 찾다가 StringBuilder를 이용하는 방법이 나와서 이 방법으로 해결해 보았다.
(보통 Scanne와 StringBuilder를 백준사이트에 돌려보면 StringBuilder가 시간 단축면에서 더 좋다. 사람들이 많이 쓰는데는 이유가 있다.)
그리고 한동안 PS를 놓고 사니까 브론즈 문제에서 생각보다 막혔다