[SWEA] 화물 입고 코드 점검 (Java)

Jun·2026년 8월 12일

알고리즘

목록 보기
8/11

1. 문제 요약

관심 코드입고 기록 두 개의 대문자 문자열이 주어진다. 관심 코드에 있는 각 글자가 입고 기록에 몇 번 등장하는지 세고, 그중 최댓값을 출력한다.

  • 관심 코드 길이 N (5 ~ 100), 입고 기록 길이 M (10 ~ 1000), N ≤ M
  • T ≤ 50

2. 접근 과정

두 문자열이 등장하는 순간 방향을 먼저 정해야 한다.

전체 흐름

  1. 입고 기록을 한 번 훑어 26칸 배열에 빈도를 센다 — O(M)
  2. 관심 코드를 한 번 훑으며 각 글자의 빈도를 조회해 최댓값을 갱신한다 — O(N)

두 문자열을 한 번씩만 보면 끝난다.

3. 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Solution {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        int T = Integer.parseInt(br.readLine().trim());

        for (int tc = 1; tc <= T; tc++) {
            String code = br.readLine().trim();
            String record = br.readLine().trim();

            int[] count = new int[26];
            for (int i = 0; i < record.length(); i++) {
                count[record.charAt(i) - 'A']++;
            }

            int max = 0;
            for (int i = 0; i < code.length(); i++) {
                max = Math.max(max, count[code.charAt(i) - 'A']);
            }

            sb.append('#').append(tc).append(' ').append(max).append('\n');
        }

        System.out.print(sb);
    }
}

시간복잡도: O(N + M) — 각 문자열을 한 번씩 훑는다. 카운팅 배열은 크기 26 고정이라 초기화 비용도 상수다.
공간복잡도: O(1) — 배열 크기가 입력과 무관하게 26으로 고정된다.

profile
꾸준하게

0개의 댓글