백준 1919 - 애너그램 만들기
백준 1919 - 애너그램 만들기
https://www.acmicpc.net/problem/1919
풀이
처음 문제에 접근했을 때는 알파벳을 담을 배열 하나를 만든 후, 첫 단어를 담고,
두 번째 단어는 문자에 해당하는 인덱스의 배열 값이 0이 아닐 경우 첫 단어의 문자일 것이므로,
빼주고, 0인 경우 더해주는 식으로 구하려고 하였다.
하지만 이렇게 구할 경우, 두 번째 단어에서 같은 문자가 여러 개 나올 경우 위의 알고리즘이
올바르게 동작하지 않는다. 따라서 배열 두 개를 만들고, 두 개의 배열의 각각의 인덱스마다
빼서 결과에 더하는 풀이를 사용하였다.
// 처음 생각했던 오답 풀이
for (char c: word1) {
alphabet[c - 'a']++;
cnt++;
}
for (char c: word2) {
if (alphabet[c - 'a'] == 0) {
cnt++;
}
else {
cnt--;
}
}
Leave a comment