백준 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--;
    }
}


코드

Categories:

Updated:

Leave a comment