코딩테스트
[백준/1032/명령 프롬프트]
개발하는지호
2024. 3. 18. 22:52
https://www.acmicpc.net/problem/1032
1032번: 명령 프롬프트
첫째 줄에 파일 이름의 개수 N이 주어진다. 둘째 줄부터 N개의 줄에는 파일 이름이 주어진다. N은 50보다 작거나 같은 자연수이고 파일 이름의 길이는 모두 같고 길이는 최대 50이다. 파일이름은
www.acmicpc.net
<<풀이>>
이 문제는 맨 처음 것을 toCharArray로 변형 한 뒤 그 다음 부터 각각의 char와 비교하면서 다르면 '?'로 바뀌게 함으로써
구할 수 있는 쉬운 문제이다.
그리고 기존에는 무조건 solution 값에 return값을 줘서 구했는데 void로 해서 바로 콘솔에 찍게 만들 수도 있다.
이런 점은 나중에도 유용하게 이용하자.
import java.util.Scanner;
class Main {
private void solution(String[] arr, int n) {
char[] target = arr[0].toCharArray();
for (int i = 1; i < n; i++) {
for (int j = 0; j < target.length; j++) {
if (target[j] != arr[i].charAt(j)) target[j] = '?';
}
}
for (char x : target) System.out.print(x);
}
public static void main(String[] args) {
Main T = new Main();
Scanner in = new Scanner(System.in);
int n = in.nextInt();
String[] arr = new String[n];
for (int i = 0; i < n; i++) {
arr[i] = in.next();
}
T.solution(arr, n);
}
}
근데 이상한 점을 발견했는데
바로 이 코드이다. 나는 처음에 return 값 String을 반환해서 주려고 했기에 x + answer 로 최종적으로 답을 구하려고 했다.
근데
Not a statement
이라는 문구가 뜨면서 에러가 생겼다.
import java.util.Scanner;
class Main {
private String solution(String[] arr, int n) {
char[] target = arr[0].toCharArray();
for (int i = 1; i < n; i++) {
for (int j = 0; j < target.length; j++) {
if (target[j] != arr[i].charAt(j)) target[j] = '?';
}
}
String answer = "";
for (char x : target) x + answer;
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner in = new Scanner(System.in);
int n = in.nextInt();
String[] arr = new String[n];
for (int i = 0; i < n; i++) {
arr[i] = in.next();
}
System.out.println( T.solution(arr, n));
}
}