안녕하세요. 오늘은 단어 사다리를 만들 거예요.

문제

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

아이디어

두 문자열이 문제의 조건을 만족하는지 판별하는 함수를 able(s,s2)라고 합시다.
그러면 문자열을 순서대로 받아서 #이 나오면 break하고 하니면 able을 검사하면서 그 세트가 가능한지 아닌지를 판별해주면 됩니다.

소스코드

#include <iostream>
#include <string>
#define ll long long
using namespace std;

bool able(string s, string s2)
{
    if (s.length() != s2.length()) return false;

    ll cnt = 0;
    for (ll i = 0; i < s.length(); i++)
        if (s[i] != s2[i])
            cnt++;
    return cnt == 1;
}

int main()
{
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    string before, now;

    while (true)
    {
        cin >> before;
        if (before == "#") break;
        bool flag = true;

        while (true)
        {
            cin >> now;
            if (now == "#") break;
            if (able(before, now) == false) flag = false;
            before = now;
        }

        if (flag) cout << "Correct\n";
        else cout << "Incorrect\n";
    }
}


감사합니다.

0개의 댓글