알고리즘

[BOJ 4900] 7 더하기

dldyou 2024. 3. 26. 20:42

구현 문제이다. 보기 편하도록 맵과 배열을 이용해 변환 과정을 처리해놓았다.

string digitTo7Segment[10] = {
    "063", "010", "093", "079", "106", "103", "119", "011", "127", "107"
};

map<string, string> _7SegmentToDigit = {
    {"063", "0"}, {"010", "1"}, {"093", "2"}, {"079", "3"}, {"106", "4"},
    {"103", "5"}, {"119", "6"}, {"011", "7"}, {"127", "8"}, {"107", "9"}
};

string getNumBy7Segment(string s) {
    string ret = "";
    for (int i = 0; i < s.length(); i += 3)
        ret += _7SegmentToDigit[s.substr(i, 3)];
    return ret;
}

string get7SegmentByNum(int x) {
    string s = to_string(x);
    string ret = "";
    for (int i = 0; i < s.length(); i++)
        ret += digitTo7Segment[s[i] - '0'];
    return ret;
}


int main(void) {
    fastio;
    while (1) {
        string s; cin >> s;
        if (s == "BYE") break;
        string A_ = s.substr(0, s.find('+'));
        string B_ = s.substr(s.find('+') + 1, s.find('=') - s.find('+') - 1);
        string A = getNumBy7Segment(A_), B = getNumBy7Segment(B_);
        int C = stoi(A) + stoi(B);
        cout << A_ << "+" << B_ << "=" << get7SegmentByNum(C) << "\n";
    }
    return 0;
}

'알고리즘' 카테고리의 다른 글

[BOJ 3673] 나눌 수 있는 부분 수열  (0) 2024.03.28
[BOJ 20310] 타노스  (0) 2024.03.26
[BOJ 17215] 볼링 점수 계산  (0) 2024.03.26
[BOJ 2806] DNA 발견  (0) 2024.03.25
[BOJ 27966] △  (0) 2024.03.25