PS

BOJ 1919 - 애너그램 만들기

728x90

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

 

1919번: 애너그램 만들기

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

www.acmicpc.net

 

- c++

#include <iostream>
#include <string>
 
using namespace std;
 
int alphabet1[26], alphabet2[26];
 
int main()
{
    cin.tie(nullptr);
    ios_base::sync_with_stdio(false);
 
    string str1, str2;
    cin >> str1 >> str2;
 
    // 아래의 두 for 문은 각 str 이 포함한 알파벳이 몇개인지 표현하기 위해
    // 아스키 코드를 사용한 연산을 통해서 증감 연산자를 통해 해당 알파벳 갯수를 표현함.
    for (int i = 0; i < str1.size(); i++)
    {
        alphabet1[str1[i] - 'a']++;
    }
 
    for (int j = 0; j < str2.size(); j++)
    {
        alphabet2[str2[j] - 'a']++;
    }
 
    // 알파벳 갯수를 초기화 한 이후, 서로 다른 갯수를 가진 경우나 다른 알파벳을 가진경우 카운팅을 시작하고
    // 그때의 카운팅 방식은 절댓값 연산을 통해서 둘을 뺀 값을 카운팅 횟수에 추가한다.
    int cnt = 0;
    for (int i = 0; i < 26; i++)
    {
        if (alphabet1[i] != alphabet2[i])
        {
            cnt += abs(alphabet1[i] - alphabet2[i]);
        }
    }
 
    cout << cnt;
 
    return 0;
}
cs

 

 

728x90

'PS' 카테고리의 다른 글

BOJ 1002 - 터렛  (0) 2020.08.07
BOJ 1759 - 암호 만들기  (0) 2020.08.05
BOJ 3613 - Java vs C++  (0) 2020.08.02
BOJ 1152 - 단어의 갯수  (0) 2020.08.01
BOJ 1753 - 최단 경로  (0) 2020.07.31