https://www.acmicpc.net/problem/6996
1. 아이디어
애너그램은 두 문자열에 등장한 각 알파벳의 개수가 동일함을 이용해서 해결할 수 있다.
2. 문제풀이
알파벳 소문자가 등장한 개수를 기록하는 카운팅 배열을 선언해서 A 단어에 등장한 알파벳의 개수를 더해주고 B 단어에 등장한 알파벳의 개수를 빼줬다. 두 단어가 애너그램 관계라면 카운팅 배열의 모든 값이 0이어야 함을 이용해서 구현했고 반복문 라벨링을 활용해서 바로 빠져나오게 구현했다.
3. 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
StringTokenizer st;
int T = Integer.parseInt(br.readLine());
out:
for (int tc = 1; tc <= T; tc++) {
st = new StringTokenizer(br.readLine());
char[] str1 = st.nextToken().toCharArray();
char[] str2 = st.nextToken().toCharArray();
int[] cntArr = new int[26];
for (char c : str1) {
cntArr[c - 'a']++;
}
for (char c : str2) {
cntArr[c - 'a']--;
}
for (int cnt : cntArr) {
if (cnt != 0) {
sb.append(str1).append(" & ").append(str2).append(" are NOT anagrams.\n");
continue out;
}
}
sb.append(str1).append(" & ").append(str2).append(" are anagrams.\n");
}
bw.write(sb.toString());
bw.flush();
}
}
4. 후기
'코딩테스트 준비 > 백준' 카테고리의 다른 글
[백준] 5635번 - 생일 [Java] (0) | 2025.01.14 |
---|---|
[백준] 11098번 - 첼시를 도와줘! [Java] (0) | 2025.01.14 |
[백준] 11944번 - NN [Java] (0) | 2025.01.14 |
[백준] 2357번 - 최솟값과 최댓값 [Java] (0) | 2025.01.14 |
[백준] 10868번 - 최솟값 [Java] (0) | 2025.01.14 |