99클럽 코테 스터디 8일차 TIL + 한국이 그리울 땐 서버에 접속하지

2025. 4. 10. 03:08·📝 끄적끄적/항해99 코테 스터디

https://www.acmicpc.net/problem/9996

 

- 오늘의 학습 키워드

한국이 그리울 땐 서버에 접속하지


- 풀이

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int fileCount = Integer.parseInt(sc.nextLine());

        String pattern = sc.nextLine();
        String[] filenames = new String[fileCount];

        for (int i = 0; i < fileCount; i++) {
            filenames[i] = sc.nextLine();
        }

        String[] results = solution(pattern, filenames);
        for (String result : results) {
            System.out.println(result);
        }
    }

    private static String[] solution(String pattern, String[] filenames) {
        String[] resultArray = new String[filenames.length];
        String regex = pattern.replace("*", ".*");

        for (int i = 0; i < filenames.length; i++) {
            if (filenames[i].matches(regex)) {
                resultArray[i] = "DA";
            } else {
                resultArray[i] = "NE";
            }
        }
        return resultArray;
    }
}


- 오늘의 회고

`a*d` → `a.*d` 이렇게 정규식으로 바꿔서 간단하게 풀 수 있었다.

.*은 아무 문자 0개 이상을 의미하기 때문에!

 

정규식을 사용하지 않고 별 하나를 기준으로 패턴을 접두사 + 접미사로 나눠서,
문자열이 그 둘로 시작하고 끝나는지만 체크하는 방법으로도 풀 수 있다.

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int fileCount = Integer.parseInt(sc.nextLine());

        String pattern = sc.nextLine();
        String[] filenames = new String[fileCount];

        for (int i = 0; i < fileCount; i++) {
            filenames[i] = sc.nextLine();
        }

        String[] results = solution(pattern, filenames);
        for (String result : results) {
            System.out.println(result);
        }
    }

    private static String[] solution(String pattern, String[] filenames) {
        String[] resultArray = new String[filenames.length];

        String[] patternParts = pattern.split("\\*");
        String prefix = patternParts[0];
        String suffix = patternParts[1];

        for (int i = 0; i < filenames.length; i++) {
            String filename = filenames[i];
            if (filename.length() < prefix.length() + suffix.length()) {
                resultArray[i] = "NE";
            } else if (filename.startsWith(prefix) && filename.endsWith(suffix)) {
                resultArray[i] = "DA";
            } else {
                resultArray[i] = "NE";
            }
        }

        return resultArray;
    }
}

`a*d` → `["a", "d"]` 이렇게 패턴을 suffix, prefix로 분리한 다음,

각 파일 이름을 순회하면서 그 이름이 prefix로 시작하고, suffix로 끝나는지 확인하는 것이다.

💡 파일 이름이 너무 짧은 경우는 접두사 + 접미사 자체가 들어갈 수 없기 때문에 무조건 "NE"를 반환한다.

 

 

속도는 접두사 + 접미사 비교 방식이 더 빠르다!

 

저작자표시 비영리 (새창열림)

'📝 끄적끄적 > 항해99 코테 스터디' 카테고리의 다른 글

99클럽 코테 스터디 11일차 TIL + 과자 나눠주기  (0) 2025.04.15
99클럽 코테 스터디 10일차 TIL + 병든 나이트  (0) 2025.04.12
99클럽 코테 스터디 9일차 TIL + 저울  (0) 2025.04.10
99클럽 코테 스터디 7일차 TIL + 쇠막대기  (0) 2025.04.09
99클럽 코테 스터디 6일차 TIL + 섬의 개수  (0) 2025.04.08
99클럽 코테 스터디 2일차 TIL + 피보나치 비스무리한 수열  (0) 2025.04.02
'📝 끄적끄적/항해99 코테 스터디' 카테고리의 다른 글
  • 99클럽 코테 스터디 10일차 TIL + 병든 나이트
  • 99클럽 코테 스터디 9일차 TIL + 저울
  • 99클럽 코테 스터디 7일차 TIL + 쇠막대기
  • 99클럽 코테 스터디 6일차 TIL + 섬의 개수
현주먹
현주먹
대구 불주먹 출신 현주먹의 개발.log
  • 현주먹
    현주먹의 개발로그
    현주먹
  • 전체
    오늘
    어제
    • 전체글 (176)
      • 👶🏻 CS (15)
        • Operating System (7)
        • DB (5)
        • Data Structure (2)
        • Software Engineering (1)
      • 💻 Dev (54)
        • Java & OOP (24)
        • Spring (4)
        • DB&JPA (6)
        • Test Code (1)
        • JSP & Servlet (13)
        • Etc (6)
      • 💡 Algorithm (25)
        • 인프런 (9)
        • 백준 (16)
      • 🛠 DevOps & Tool (11)
        • Linux (4)
        • AWS (1)
        • Git (2)
        • Etc (4)
      • 📝 끄적끄적 (71)
        • 후기 및 회고 (10)
        • TDD, 클린 코드 with Java 17기 (3)
        • F-Lab (23)
        • 🖥️ 자바의 정석 (11)
        • 📖 Clean Code (3)
        • 항해99 코테 스터디 (11)
        • 📖 가상 면접 사례로 배우는 대규모 시스템 설계 .. (9)
  • 블로그 메뉴

    • 🐈‍⬛ GitHub
    • TIL repository
  • 인기 글

  • 최근 글

  • 최근 댓글

  • 태그

    til
    객체지향
    데브클럽
    에프랩
    인프런 특정문자뒤집기
    백준
    NextSTEP
    개발자멘토링
    오블완
    티스토리챌린지
    TDD 클린 코드 with Java
    ==와 equals()
    오라클
    F-Lab
    자바의신절판
    개발자취업
    99클럽
    C
    jsp
    f-lab 후기
    항해99
    코딩테스트준비
    에프랩 후기
    jsp 2.3 웹 프로그래밍: 기초부터 중급까지
    2025스프링캠프
    로또 미션
    JPA
    코테스터디
    개구리책
    자바의정석
  • hELLO· Designed By정상우.v4.10.2
현주먹
99클럽 코테 스터디 8일차 TIL + 한국이 그리울 땐 서버에 접속하지
상단으로

티스토리툴바