//GitHub https://github.com/vellimole0621
vellimole0621 - Overview
vellimole0621 has 4 repositories available. Follow their code on GitHub.
github.com
백준 1032번 : 명령 프롬프트
(문제 - https://www.acmicpc.net/problem/1032)
문제 설명 : 수를 입력 받아서, 그 수 만큼의 개수의 문자열을 입력받는다. 각각의 문자열 중 서로 다른 문자는 '?'로 바꾸고 출력한다.
풀이 : 수 입력 받음 >> 그 수 만큼 문자열 입력 받음 >> 배열 생성해서 각각 문자열, 문자 저장 >> 출력을 위한 새 배열 생성 >> 각각의 문자열 서로 비교하여, 모두 같은 경우 새 배열에 문자 그대로 저장하고, 다른 경우 '?' 저장 >> 저장 완료한 새 배열 출력
package algorithm;
import java.util.*;
public class Solve220809 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
//파일 개수 N 입력
int N = sc.nextInt();
sc.nextLine();
//기준 첫 파일 입력 후, 문자 배열에 저장
String A = sc.nextLine();
char[] B = A.toCharArray();
//첫 파일 기준, 나머지 파일 담을 배열 생성
char[][] C = new char[N-1][A.length()];
//나머지 파일 배열에 저장
for(int i=0; i<N-1; i++){
String D = sc.nextLine();
for(int j=0; j<A.length(); j++){
C[i][j] = D.charAt(j);
}
}
//출력하기 위한 배열 생성
char[] E = new char[A.length()];
//각각 파일의 문자 비교, 다 같으면 그 문자 대입/ 다르면 '?' 문자 대입
// 첫 파일과 나머지 파일 비교
for(int t=0; t<N-1; t++){
for(int k=0; k<A.length(); k++){
if((B[k] == C[t][k])){
E[k] = B[k];
}else{
E[k] = '?';
}
}}
// 나머지 파일간 비교
for(int t=0; t<N-2; t++){
for(int k=0; k<A.length(); k++){
if((C[t][k] != C[t+1][k])){
E[k] = '?';
}
}}
//문자가 하나 일 때, 그대로 출력 / 다를 경우, 앞서 반복문으로 처리한 문자 배열 출력
for(int n=0; n<A.length(); n++){
if(N==1){
System.out.print(B[n]);
}else
{
System.out.print(E[n]);
}
}
sc.close();
}
}
'프로그래밍 > Java' 카테고리의 다른 글
[자바 JAVA/알고리즘] 백준 2750번 : 수 정렬하기 (0) | 2022.08.12 |
---|---|
[자바 JAVA/알고리즘] 백준 15596번 : 정수 N개의 합 (0) | 2022.08.11 |
[자바 JAVA/알고리즘] 백준 2693번 : N번째 큰 수 (0) | 2022.08.08 |
[자바 JAVA/알고리즘] 백준 2822번 : 점수 계산 (0) | 2022.08.07 |
[자바 JAVA/알고리즘] 백준 2920번 : 음계 (0) | 2022.08.05 |