반응형
https://www.acmicpc.net/problem/1919
1919번: 애너그램 만들기
두 영어 단어가 철자의 순서를 뒤바꾸어 같아질 수 있을 때, 그러한 두 단어를 서로 애너그램 관계에 있다고 한다. 예를 들면 occurs 라는 영어 단어와 succor 는 서로 애너그램 관계에 있는데, occurs
www.acmicpc.net
풀이
11328번 Strfry 문제와 상당히 유사한 문제이다.
이 때 배열을 굳이 2개나 사용하지 않아도 1개로 해결할 수 있는 모범 풀이가 존재해
이번 문제도 한 가지 배열로 풀어봐야겠다고 다짐했으나..
시간을 투자하여도 내 풀이에는 반례가 존재했다.
모범 답안을 보면 1개의 배열로 풀 수는 있으나 2차원 배열이기 때문에 1차원 배열 2개를 사용하는 것과 같다.
내 코드
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int N, l, al[26] = {}, al2[26] = {},sum = 0;
string a, b;
cin >> a >> b;
for (auto i : a) al[i - 'a']++;
for (auto i : b) al2[i - 'a']++;
for (int i = 0; i < 26; i++)
sum += abs(al[i] - al2[i]);
cout << sum;
}
모범 답안
// Authored by : twinkite
// Co-authored by : BaaaaaaaaaaarkingDog
// http://boj.kr/ae5d8d2f69f04530b4df0c591e9b07d5
#include <bits/stdc++.h>
using namespace std;
int arr[2][26], res;
string s1, s2;
int main(void){
ios::sync_with_stdio(0);
cin.tie(0);
cin>>s1>>s2;
for(char c : s1)
arr[0][c-'a']++;
for(char c : s2)
arr[1][c-'a']++;
for(int i=0; i<26; i++)
res += abs(arr[0][i]-arr[1][i]);
cout << res;
}
반응형
'Baekjoon' 카테고리의 다른 글
[C++] 10773번 : 제로 (0) | 2024.03.03 |
---|---|
[C++] 1406번 : 에디터 (1) | 2024.02.27 |
[C++] 백준 3273번 : 두 수의 합 (0) | 2024.02.22 |
[C++] 1475번 : 방 번호 (0) | 2024.02.22 |
[C++] 2577번: 숫자의 개수 (0) | 2024.02.21 |