오늘의 학습 키워드
- 파일 패턴 매칭 알고리즘
- 문자열 비교와 패턴 생성
[백준 1032 명령프롬프트 문제]
문제 요약
- 여러 개의 파일 이름이 주어졌을 때, 이 파일들을 모두 검색할 수 있는 패턴을 찾는 문제
- 패턴에는 알파벳, '.', '?'만 사용 가능하며, '?'는 아무 문자나 매칭됨
- 가능한 '?'를 적게 사용해야 함
해결 방법
문제 해결의 핵심은 모든 파일 이름을 비교하여 같은 위치에 모두 같은 문자가 있으면 그 문자를 사용하고, 하나라도 다른 문자가 있으면 '?'로 대체하는 것이었습니다.
알고리즘:
- 첫 번째 파일 이름을 기준으로 삼음
- 나머지 모든 파일과 각 위치별로 문자 비교
- 같은 위치에 모든 파일이 같은 문자를 가지고 있으면 그 문자 사용
- 하나라도 다른 문자가 있으면 '?' 사용
Java 코드 구현
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.nextLine();
String[] files = new String[n];
for(int i = 0; i < n; i++) {
files[i] = sc.nextLine();
}
char[] result = files[0].toCharArray();
for(int i = 1; i < n; i++) { // 두 번째 파일부터 비교
for(int j = 0; j < result.length; j++) {
if(result[j] != files[i].charAt(j)) {
result[j] = '?';
}
}
}
System.out.println(new String(result));
sc.close();
}
}
오늘의 회고
What?
처음에는 문제를 어렵게 생각했습니다. 파일 시스템을 다뤄야 하나 걱정했지만,
실제로는 단순한 문자열 처리 문제였습니다.
How?
모든 파일 이름을 문자별로 비교하는 간단한 알고리즘으로 문제를 해결했습니다.
Point?
- 단순한 알고리즘이지만 효율적으로 문제를 해결할 수 있다는 것을 알게 되었습니다
- 이번 스터디를 통해 실제 개발에서도 유용하게 쓰일 알고리즘과 사고방식을 배울 수 있어 기대됩니다.
#99클럽 #코딩테스트준비 #개발자취업 #항해99 #TIL
'코테' 카테고리의 다른 글
99클럽 코테 스터디 9일차 TIL + 백준 3986 (1) | 2025.04.08 |
---|---|
99클럽 코테 스터디 8일차 TIL + [LeetCode 70번] Climbing Stairs (1) | 2025.04.07 |
99클럽 코테 스터디 4일차 TIL + [LeetCode 232번] Implement Queue using Stacks (0) | 2025.04.03 |
99클럽 코테 스터디 3일차 TIL + 백준 31458 (0) | 2025.04.02 |
99클럽 코테 스터디 2일차 TIL + 백준 10820 (0) | 2025.04.01 |