-
[알고리즘] 백준 - 명령프롬프트(문자열)Algorithm 2024. 4. 22. 16:39
백준 - 명령프롬프트
https://www.acmicpc.net/problem/1032
문제
시작 -> 실행 -> cmd를 쳐보자. 검정 화면이 눈에 보인다. 여기서 dir이라고 치면 그 디렉토리에 있는 서브디렉토리와 파일이 모두 나온다. 이때 원하는 파일을 찾으려면 다음과 같이 하면 된다.
dir *.exe라고 치면 확장자가 exe인 파일이 다 나온다. "dir 패턴"과 같이 치면 그 패턴에 맞는 파일만 검색 결과로 나온다. 예를 들어, dir a?b.exe라고 검색하면 파일명의 첫 번째 글자가 a이고, 세 번째 글자가 b이고, 확장자가 exe인 것이 모두 나온다. 이때 두 번째 문자는 아무거나 나와도 된다. 예를 들어, acb.exe, aab.exe, apb.exe가 나온다.
이 문제는 검색 결과가 먼저 주어졌을 때, 패턴으로 뭘 쳐야 그 결과가 나오는지를 출력하는 문제이다. 패턴에는 알파벳과 "." 그리고 "?"만 넣을 수 있다. 가능하면 ?을 적게 써야 한다. 그 디렉토리에는 검색 결과에 나온 파일만 있다고 가정하고, 파일 이름의 길이는 모두 같다.
예시
입력한 정보 중에 서로 다른 글자가 있다면 "?" 표시로 대채하면된다.
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); List<String> commandList = new ArrayList<>(); StringBuilder answer = new StringBuilder(); int n = Integer.parseInt(br.readLine()); // 명령어 정보 입력 받기 for (int i = 0; i < n; i++) { commandList.add(br.readLine()); } br.close(); // 기준 명령어 설정 String std = commandList.get(0); // 다름 여부 확인 boolean isDiff; // 기준 명령어 길이만큼 반복 (모든 명령어 길이가 같음) for (int i = 0; i < std.length(); i++) { // 다음 글자 이동시 다름 여부 초기화 isDiff = false; // 리스트내에 각 위치에서 다름 여부 체크 for (int j = 0; j < n; j++) { // 다른 경우 체크 후 루프 브레이크 if (std.charAt(i) != commandList.get(j).charAt(i)) { isDiff = true; break; } } // 다른 경우 "?" 같은 경우 기준 글자 추가 if (isDiff) { answer.append("?"); } else { answer.append(std.charAt(i)); } } System.out.println(answer); } }
'Algorithm' 카테고리의 다른 글
[알고리즘] 프로그래머스 3단계 - 길 찾기 게임 (0) 2024.04.24 [알고리즘] 프로그래머스 3단계 - 다단계 칫솔판매 (0) 2024.04.23 [알고리즘] 백준 - 균형 잡힌 세상(스택) (0) 2024.04.18 [알고리즘] 백준 - 좌표 정렬하기 (0) 2024.04.17