N

(SWEA c++)7272. 안경이 없어! 본문

SW Expert Academy

(SWEA c++)7272. 안경이 없어!

naeunchan 2020. 11. 24. 18:09
728x90
반응형

swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWl0ZQ8qn7UDFAXz&categoryId=AWl0ZQ8qn7UDFAXz&categoryType=CODE

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

전역변수로 알파벳 개수인 26 길이의 배열을 선언하여 구멍의 개수를 저장한다.

 

두 문자열을 입력받고 서로를 비교.

만약 두 문자열의 길이가 같지 않다면 바로 "DIFF"를 출력하여 끝내도록 한다.

아니라면 두 문자열을 하나씩 비교하면 된다.

 

둘 중 하나의 사이즈만큼 for문을 돌면서,

구멍의 개수가 1개면

tmpA, tmpB에 "1"을 추가.

 

구멍의 개수가 2개면

tmpA, tmpB에 "2"를 추가.

 

구멍의 개수가 0개면

tmpA, tmpB에 "0"을 추가.

 

이렇게 하여 두 문자열이 같으면 "SAME"을 출력하고,

다르다면 "DIFF"를 출력하면 된다.

 

구멍의 개수가 같은 것을 찾는 게 아니라,

구멍의 개수로 문자열을 새로 만들어서 비교하는 것이 핵심이다.

#include <iostream>
#include <string>

using namespace std;

const int hole[26] = {1, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0};

int main(void)
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    
    int t;
    cin >> t;
    
    for(int tc = 1; tc <= t; tc++)
    {
        string a, b, tmpA = "", tmpB = "";
        bool check = false;
        int aCount = 0, bCount = 0;
            
        cin >> a >> b;

        if(a.size() != b.size())
        {
        	cout << "#" << tc  << " DIFF" << endl;
            continue;
        }
        else
        {   
            for(int j = 0; j < a.size(); j++)
            {
                if(hole[a[j] - 'A'] == 1)
                    tmpA += "1";
                else if(hole[a[j] - 'A'] == 0)
                    tmpA += "0";
                else
                    tmpA += "2";
                
                if(hole[b[j] - 'A'] == 1)
                    tmpB += "1";
                else if(hole[b[j] - 'A'] == 0)
                    tmpB += "0";
                else
                    tmpB += "2";
            }
        }
        
        cout << "#" << tc << " ";
        if(tmpA == tmpB)
            cout << "SAME" << endl;
        else
            cout << "DIFF" << endl;
    }
    return 0;
}
728x90
반응형