알고리즘/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;
}
문제의 포인트
- 배열에 담아서 비교합니다.
- 배열의 차이가 음수가 될 수도 있기 때문에 절대값으로 계산합니다.
반응형