알고리즘/BOJ

[c/c++] BOJ 1919번 문제 - 애너그램 만들기

wonjun.Aden 2022. 2. 21. 23:19

https://www.acmicpc.net/problem/1919

 

1919번: 애너그램 만들기

두 영어 단어가 철자의 순서를 뒤바꾸어 같아질 수 있을 때, 그러한 두 단어를 서로 애너그램 관계에 있다고 한다. 예를 들면 occurs 라는 영어 단어와 succor 는 서로 애너그램 관계에 있는데, occurs

www.acmicpc.net

 

문제

문제 풀이

#include <bits/stdc++.h>
using namespace std;

//에너그램 만들기
//두 영어 단어가 철자의 순서를 뒤바꾸어 같아질 수 있을 때 에너그램 관계
//두 개의 영어 단어가 주어졌을 때, 두 단어가 서로 애너그램 관계에 있도록 만들기 위해서 제거해야 하는 최소 개수의 문자 수를 구하시오.
int main(){
	ios::sync_with_stdio(false);
    cin.tie(0);
    //각각의 길이는 1000자를 넘지 않으며, 적어도 한 글자로 이루어진 단어가 주어짐.
    string s1;
    string s2;
    int arr1[26]={0,};
    int arr2[26]={0,};

    cin >> s1 >> s2;
    int ans=0;
    for(char c:s1){
        arr1[c-'a']++;
    }
    for(char c:s2){
        arr2[c-'a']++;
    }
    //차이가 음수가 될 수도 있기 때문에 절대값 설정
    for(int i=0;i<26;i++){
        if(arr1[i]!=arr2[i]){
            ans+=abs(arr1[i]-arr2[i]);
        }
    }
    cout << ans;

}

 

문제의 포인트

  • 배열에 담아서 비교합니다.
  • 배열의 차이가 음수가 될 수도 있기 때문에 절대값으로 계산합니다.
반응형