코테

99클럽 코테 스터디 1일차 TIL + 백준 1032

pipinstall 2025. 3. 31. 20:51

오늘의 학습 키워드

  • 파일 패턴 매칭 알고리즘
  • 문자열 비교와 패턴 생성

[백준 1032 명령프롬프트 문제]

문제 요약

  • 여러 개의 파일 이름이 주어졌을 때, 이 파일들을 모두 검색할 수 있는 패턴을 찾는 문제
  • 패턴에는 알파벳, '.', '?'만 사용 가능하며, '?'는 아무 문자나 매칭됨
  • 가능한 '?'를 적게 사용해야 함

해결 방법

문제 해결의 핵심은 모든 파일 이름을 비교하여 같은 위치에 모두 같은 문자가 있으면 그 문자를 사용하고, 하나라도 다른 문자가 있으면 '?'로 대체하는 것이었습니다.

알고리즘:

  1. 첫 번째 파일 이름을 기준으로 삼음
  2. 나머지 모든 파일과 각 위치별로 문자 비교
  3. 같은 위치에 모든 파일이 같은 문자를 가지고 있으면 그 문자 사용
  4. 하나라도 다른 문자가 있으면 '?' 사용

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?

  1. 단순한 알고리즘이지만 효율적으로 문제를 해결할 수 있다는 것을 알게 되었습니다
  2. 이번 스터디를 통해  실제 개발에서도 유용하게 쓰일 알고리즘과 사고방식을 배울 수 있어 기대됩니다.

#99클럽 #코딩테스트준비 #개발자취업 #항해99 #TIL