문제 풀이/백준
[백준] 1622번. 공통 순열(JAVA)
27200
2025. 6. 28. 11:59
문제
https://www.acmicpc.net/problem/1622
풀이(13분)
import java.io.*;
import java.util.*;
public class Main {
private static final int ALPHABET_SIZE = 26;
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String lineA;
while ((lineA = reader.readLine()) != null) {
String lineB = reader.readLine();
if (lineB == null) break;
int[] freqA = getCharFrequency(lineA);
int[] freqB = getCharFrequency(lineB);
String common = getCommonCharacters(freqA, freqB);
System.out.println(common);
}
}
private static int[] getCharFrequency(String input) {
int[] frequency = new int[ALPHABET_SIZE];
for (char ch : input.toCharArray()) {
frequency[ch - 'a']++;
}
return frequency;
}
private static String getCommonCharacters(int[] freqA, int[] freqB) {
StringBuilder result = new StringBuilder();
for (int i = 0; i < ALPHABET_SIZE; i++) {
int commonCount = Math.min(freqA[i], freqB[i]);
for (int j = 0; j < commonCount; j++) {
result.append((char) (i + 'a'));
}
}
return result.toString();
}
}
문제 풀이 전략
직접 알파벳의 개수를 카운트 한 뒤 직접 list에 추가해 주는 단순한 방법이다.
이 문제에서 조금 어려울 수 있는 부분은 EOF처리에 있다.
입력이 언제 끝나는지 모르는 상황에서 입력을 종료하고 정답을 출력해야 하기 때문이다.
https://to-travel-coding.tistory.com/408
[도구정리] 코딩테스트 EOF 입력 처리(JAVA)
🧪 자바에서 테스트 케이스가 여러 가지 방식으로 주어질 때 입력 처리 방법문제를 풀다 보면 테스트 케이스가 다양한 방식으로 주어질 수 있다. 그 방식에 따라 입력 처리 로직을 다르게 구성
to-travel-coding.tistory.com
EOF 처리를 모른다면 위의 내용을 참고하자.