백준 1032번:명령 프롬프트
이 문제는 검색 결과가 먼저 주어졌을 때, 패턴으로 뭘 쳐야 그 결과가 나오는지를 출력하는 문제이다. 패턴에는 알파벳과 "." 그리고 "?"만 넣을 수 있다. 가능하면 ?을 적게 써야 한다. 그 디렉토리에는 검색 결과에 나온 파일만 있다고 가정하고, 파일 이름의 길이는 모두 같다.
입력:
3
config.sys
config.inf
configures
출력:
config????
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int cnt = sc.nextInt();
sc.nextLine(); //개행 처리
String[] files = new String[cnt];
for(int i=0; i<cnt; i++) {
files[i] = sc.nextLine();
}
String firstFile = files[0];
StringBuilder pattern = new StringBuilder();
for (int i=0; i<firstFile.length(); i++) {
boolean isSame = true;
char currentChar = firstFile.charAt(i);
for (int j=1; j<cnt; j++) {
if (currentChar != files[j].charAt(i)) {
isSame = false;
break;
}
}
if (isSame) {
pattern.append(currentChar);
} else {
pattern.append("?");
}
}
System.out.println(pattern);
sc.close();
}
}
sc.nextLine();
을 통해 for문을 돌면서 파일 배열 목록에 값 입력isSame
변수를 false로 설정하고 break;
를 통해 해당 for문을 빠져나감isSame
이 true이면 현재 char를 StringBuilder에 추가하고, 그렇지 않다면 '?' 문자열을 추가오랜만에 코딩테스트를 준비하려고 하니까 처음에는 막막했다. 45분이 권장사항 이었지만, 훨씬 오래 걸렸다. 처음에는 백준에 주어진 조건(파일이름 알파벳 소문자와 '.'로 이루어져있는지, N이 50보다 작거나 같은 자연수인지)을 모두 구현해야하는 줄 알고 복잡하게 생각해 더 어렵게 느껴졌다. 하지만 그게 아니었다..
그 외에도 오늘 정기모임 스터디에서 추가 문제로 백준 10988번:팰린드롬인지 확인하기도 풀었다. 처음에는 이중for문으로 풀었는데, 챗gpt에서는 그냥 for문을 돌면서 if (str.charAt(i) != str.charAt(str.length()-1-i))
조건문을 추가하는 방식도 있었다. 그런데, 정기모임 팀장(?)님의 풀이 방법 중 하나인 바로 StringBuilder sb = new StringBuilder().append(str).reverse();
를 해서 바로 입력받은 문자열과 비교를 하는 방식도 있었는데 저런 방법도 있구나 생각이 많이 들었다.
오늘이 1일차인데, 내일 이사를 해서 당분간 정신 없을 것 같지만 끝까지 매일 미션을 완수해보자!