

1. 문제 풀이 아이디어
- 배열을 사용하여 단어의 문자 수를 저장하고 비교하여 문제를 해결할 수 있다.
2. 나의 정답 코드
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
StringBuilder stringBuilder = new StringBuilder();
String s;
int count = 1;
while (!(s = bufferedReader.readLine()).equals("END")) {
stringBuilder.append("Case " + count + ": ");
String ss = bufferedReader.readLine();
int[] alp = new int[26];
for (char c : s.toCharArray()) {
alp[c - 'a']++;
}
boolean same = true;
for (char c : ss.toCharArray()) {
alp[c - 'a']--;
}
for (int i = 0; i < 26; i++) {
if (alp[i] != 0) {
same = false;
break;
}
}
stringBuilder.append(same ? "same\n" : "different\n");
count++;
}
System.out.print(stringBuilder);
bufferedReader.close();
}
}
3. 정리
- 첫 번째 단어의 각 문자를 처리하면서
alp
배열의 값을 증가시킨다.
- 두 번째 단어의 각 문자를 처리하면서
alp
배열의 값을 감소시킨다.
alp
배열에서 값이 0이 아닌 원소가 있으면 두 단어는 서로 다르다고 판단한다.
4. 다른 아이디어
- 맵을 사용하여 문제를 풀 수도 있다.
- 그러나 알파벳의 수가 26개밖에 없으므로, 배열을 사용한 방법이 더 효율적이다. 맵을 사용하면 속도가 2배 느릴 수 있다.
- 맵을 사용하였을 때 성능

Share article